Thread overview | |||||||
---|---|---|---|---|---|---|---|
|
April 07, 2008 ubyte arrays to numbers | ||||
---|---|---|---|---|
| ||||
hi, is there any good and easy way to convert ubyte arrays to short, ushort, int, uint long and ulong? thanks lurker |
April 07, 2008 Re: ubyte arrays to numbers | ||||
---|---|---|---|---|
| ||||
Posted in reply to lurker | lurker, el 7 de abril a las 11:43 me escribiste: > hi, > > is there any good and easy way to convert ubyte arrays to short, ushort, int, uint long and ulong? if the byte order is correct, a cast should do it, if not, htons and htonl should help (for longs, I think you have to roll your own hton). -- Leandro Lucarella (luca) | Blog colectivo: http://www.mazziblog.com.ar/blog/ ---------------------------------------------------------------------------- GPG Key: 5F5A8D05 (F8CD F9A7 BF00 5431 4145 104C 949E BFB6 5F5A 8D05) ---------------------------------------------------------------------------- SATANAS EN COMISARIA -- Crónica TV |
April 07, 2008 Re: ubyte arrays to numbers | ||||
---|---|---|---|---|
| ||||
Posted in reply to Leandro Lucarella | do you know of any prefab functions of templates?
Leandro Lucarella Wrote:
> lurker, el 7 de abril a las 11:43 me escribiste:
> > hi,
> >
> > is there any good and easy way to convert ubyte arrays to short, ushort, int, uint long and ulong?
>
> if the byte order is correct, a cast should do it, if not, htons and htonl should help (for longs, I think you have to roll your own hton).
>
> --
> Leandro Lucarella (luca) | Blog colectivo: http://www.mazziblog.com.ar/blog/
> ----------------------------------------------------------------------------
> GPG Key: 5F5A8D05 (F8CD F9A7 BF00 5431 4145 104C 949E BFB6 5F5A 8D05)
> ----------------------------------------------------------------------------
> SATANAS EN COMISARIA
> -- Crónica TV
|
April 08, 2008 Re: ubyte arrays to numbers | ||||
---|---|---|---|---|
| ||||
Posted in reply to lurker | lurker wrote: > do you know of any prefab functions of templates? > > Leandro Lucarella Wrote: > >> lurker, el 7 de abril a las 11:43 me escribiste: >>> hi, >>> >>> is there any good and easy way to convert ubyte arrays to short, ushort, int, uint long and ulong? >> if the byte order is correct, a cast should do it, if not, htons and htonl >> should help (for longs, I think you have to roll your own hton). import std.stdio; T convert(T)(ubyte[] data) { return *(cast(T*)data[0..T.sizeof].ptr); } void main() { writefln(convert!(ubyte) ([ 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ])); //2^7 = 128 writefln(convert!(ushort)([ 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ])); //2^15 = 32768 writefln(convert!(uint) ([ 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00 ])); //2^31 = 2147483648 writefln(convert!(ulong) ([ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80 ])); //2^63 = 9223372036854775808 } ** You'll want to un-wrap the array literals if your reader has wrapped the lines. :) Regan |
April 08, 2008 Re: ubyte arrays to numbers | ||||
---|---|---|---|---|
| ||||
Posted in reply to Regan Heath | thank you so much
Regan Heath Wrote:
> lurker wrote:
> > do you know of any prefab functions of templates?
> >
> > Leandro Lucarella Wrote:
> >
> >> lurker, el 7 de abril a las 11:43 me escribiste:
> >>> hi,
> >>>
> >>> is there any good and easy way to convert ubyte arrays to short, ushort, int, uint long and ulong?
> >> if the byte order is correct, a cast should do it, if not, htons and htonl should help (for longs, I think you have to roll your own hton).
>
> import std.stdio;
>
> T convert(T)(ubyte[] data)
> {
> return *(cast(T*)data[0..T.sizeof].ptr);
> }
>
> void main()
> {
> writefln(convert!(ubyte) ([ 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
> 0x00 ])); //2^7 = 128
> writefln(convert!(ushort)([ 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
> 0x00 ])); //2^15 = 32768
> writefln(convert!(uint) ([ 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
> 0x00 ])); //2^31 = 2147483648
> writefln(convert!(ulong) ([ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
> 0x80 ])); //2^63 = 9223372036854775808
> }
>
> ** You'll want to un-wrap the array literals if your reader has wrapped the lines. :)
>
> Regan
|
Copyright © 1999-2021 by the D Language Foundation