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. There's also the bswap intrinsic in core.bitop. This always swaps the byte order and it only works for uint, though.
-- Johannes Pfau