On Thu, Jul 14, 2011 at 12:03 AM, Andrew Wiley <wiley.andre...@gmail.com>wrote:
> On Wed, Jul 13, 2011 at 11:59 PM, Jonathan M Davis <jmdavisp...@gmx.com>wrote: > >> 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. >> >> core.sys.posix.arpa.inet.d >> std.c.windows.winsock.d >> > > Both of those are platform specific, and neither of them is general enough > to handle longs. > (However, they're also both faster than what I've written because I really don't need a dynamic array for something like this)