bit twiddling (endianness)

Lutger lutger.blijdestijn at gmail.com
Mon Jan 8 06:23:43 PST 2007


Hi, I need to convert a uint to 4 ubytes in big endian order for which I 
have written the function below. The thing is, I'm not 100% sure it is 
correct for Big Endian systems, would somebody be so kind as to inform 
me if this will work?

void concatUint(inout ubyte[] bytestream, uint num)
{
     bytestream.length = bytestream.length + 4;
     static if (std.system.endian == Endian.LittleEndian)
     {
         bytestream[$-4] = num >> 24;
         bytestream[$-3] = num >> 16;
         bytestream[$-2] = num >> 8;
         bytestream[$-1] = num;
     }
     else // big endian
     {
         bytestream[$-4] = num;
         bytestream[$-3] = num >> 8;
         bytestream[$-2] = num >> 16;
         bytestream[$-1] = num >> 24;
     }
}


More information about the Digitalmars-d-learn mailing list