Byte Order Swapping Function

Alix Pexton alix.DOT.pexton at gmail.DOT.com
Sun Jul 17 01:40:06 PDT 2011


On 17/07/2011 07:42, Jonathan M Davis wrote:
> On Saturday 16 July 2011 23:31:09 Andrew Wiley wrote:
[snip]
>> Take a look at http://www.dmh2000.com/cpp/dswap.shtml . It made the odd
>> behavior make a lot more sense to me.
>
> Okay. Good to know. In other words, we can't have swapEndian work with floating
> point values like that. It can generate a byte array from them (or maybe an
> integral value of the same size), but it can't generate another floating point
> value. Bleh. Okay. Floating point values with have to use an entirely different
> overload then. Thanks for the info.
>
> - Jonathan M Davis


I find myself wanting to address this issue by using types, as the FP 
example demonstrates that when the endieness of a value changes, its 
type should too.

using double as an example, I'd like to be able to write code something 
like this.

> auto v0 = 0.1;
> auto v1 = nbo!double(v0); // nbo = network byte order, your names may vary
> auto v2 = to!double(v1);
> assert(v0 == v2);

I would, of course, expect aliases for those occasions when one wants to 
state endieness explicitly (I just can't think of any >< ), and for 
non-conversions (when nbo == hbo) to be no-ops.

Or am I missing something?

A...


More information about the Digitalmars-d mailing list