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