Byte Order Swapping Function
Andrew Wiley
wiley.andrew.j at gmail.com
Wed Jul 13 23:37:02 PDT 2011
Hey, does anyone else thing a function like this belongs in Phobos, and if
so, where do you think it should go?
T ntoh(T)(T val) if (__traits(isArithmetic, T)) {
version(BigEndian) {
return val;
}
else version (LittleEndian) {
ubyte[] arr = (cast(ubyte*)&val)[0 .. T.sizeof];
ubyte temp;
for(int i = 0; i < T.sizeof/2; i++) {
temp = arr[i];
arr[i] = arr[T.sizeof - i - 1];
arr[T.sizeof - i - 1] = temp;
}
return val;
}
else static assert(0, "Are you sure you're using a computer?");
}
I was looking for something along these lines in the docs today and couldn't
find it. It looks like there's a stream in std.stream to do this, but, well,
I think we've all been pretending std.stream doesn't exist for a while now.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.puremagic.com/pipermail/digitalmars-d/attachments/20110713/2a23c9ff/attachment-0001.html>
More information about the Digitalmars-d
mailing list