digitalmars.D.learn - ubyte arrays to numbers
- lurker (4/4) Apr 07 2008 hi,
- Leandro Lucarella (10/13) Apr 07 2008 if the byte order is correct, a cast should do it, if not, htons and hto...
- lurker (2/17) Apr 07 2008
- Regan Heath (20/30) Apr 08 2008 import std.stdio;
- lurker (2/37) Apr 08 2008
hi, is there any good and easy way to convert ubyte arrays to short, ushort, int, uint long and ulong? thanks lurker
Apr 07 2008
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
Apr 07 2008
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
Apr 07 2008
lurker wrote:do you know of any prefab functions of templates? Leandro Lucarella Wrote: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. :) Reganlurker, 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).
Apr 08 2008
thank you so much Regan Heath Wrote:lurker wrote:do you know of any prefab functions of templates? Leandro Lucarella Wrote: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. :) Reganlurker, 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).
Apr 08 2008