Converting a ubyte[] to a struct with respect to endianness?

Ali Çehreli via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Fri Jun 23 22:10:22 PDT 2017


On 06/23/2017 09:26 PM, Felix wrote:
> That works, thanks!

I've just tried this, which seems cleaner:

import std.stdio;
import std.system;
import std.bitmanip;

void ensureBigEndian(T)(ref T value) {
     if (endian == Endian.littleEndian) {
         value = *cast(T*)nativeToBigEndian(value).ptr;
     }
}

void main() {
     ubyte[] bytes = [ 0, 0, 0, 13 ];
     uint u = *cast(uint*)bytes.ptr;

     writefln("Just read: %s", u);
     u.ensureBigEndian;
     writefln("Converted: %s", u);
}

Just read: 218103808
Converted: 13

Ali



More information about the Digitalmars-d-learn mailing list