Byte Order Swapping Function

Jonathan M Davis jmdavisProg at gmx.com
Fri Jul 22 08:47:07 PDT 2011


On Wednesday 13 July 2011 23:37:02 Andrew Wiley wrote:
> 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.

https://github.com/D-Programming-Language/phobos/pull/152

- Jonathan M Davis


More information about the Digitalmars-d mailing list