On Thursday, 7 July 2016 at 10:48:56 UTC, Lodovico Giaretta wrote:
On Thursday, 7 July 2016 at 10:45:12 UTC, Gary Willoughby wrote:
On Thursday, 7 July 2016 at 08:21:53 UTC, Lodovico Giaretta wrote:
Are you sure that this works in both big-endian and little-endian systems?

It shouldn't matter. You're just interested in the high and low 4 byte chunks (which are to be interpreted as an int) which will return in the relevant endianess of your machine.

But are the high 4 bytes the first 4 or the second 4? It depends on endianness. So your high and low variables may be switched, if I understand correctly.

Ah, I see. You could modify it like this:

union Value
{
    ulong full;

    static struct Bits
    {
        version (BigEndian)
        {
            uint high;
            uint low;
        }
        else
        {
            uint low;
            uint high;
        }

    }

    Bits bits;
    alias bits this;

    this(ulong value)
    {
        this.full = value;
    }
}

Reply via email to