Byte Order Swapping Function

Andrei Alexandrescu SeeWebsiteForEmail at erdani.org
Fri Jul 22 09:16:44 PDT 2011


On 7/22/11 10:47 AM, Jonathan M Davis 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.
>
> https://github.com/D-Programming-Language/phobos/pull/152

Allow me to use this opportunity for encouraging everyone to participate 
to code reviews on github.

Code reviews are the best means the community has to control the quality 
of what gets into Phobos. It's also low-barrier - just click, take a 
read, and click to the left of the line you think could be changed to 
insert a comment.


Andrei


More information about the Digitalmars-d mailing list