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