On Friday, 29 May 2015 at 08:00:54 UTC, deadalnix wrote:
On Friday, 29 May 2015 at 07:55:55 UTC, seen wrote:
I don't know why but when using a template union with a static ubyte array i get bizarre results!

module main;

import std.stdio;
private union ByteConverter(T)
{
        ubyte[T.sizeof] bytes;
        T value;
}

ubyte[] toBytes(T)(T from) if (!is(T == const))
{
        ByteConverter!T converter;
        converter.value = from;
        return converter.bytes;
}

T fromBytes(T)(in ubyte[] bytes)
{
        ByteConverter!T converter;
        converter.bytes = bytes;
        return converter.value;
}

void main(string[] args)
{
writeln(fromBytes!uint(toBytes(34u)));// should print 32 but prints 1244564
}

why dose it print 1244564 the array is static size so why is it acting like bytes is a pointer not a static array?

http://fr.wikipedia.org/wiki/Endianness#Little_endian

endianness should not be an issue since I'm not changing machines
and using static array unions is a common way to convert to bytes in D.

Reply via email to