strings and endianness

Johannes Pfau spam at example.com
Wed Jan 18 11:40:33 PST 2012


I'm currently finishing std.uuid (see 
http://prowiki.org/wiki4d/wiki.cgi?ReviewQueue ). For name based hashes, a 
name string is passed to a hash function and I need to make sure that the 
resulting hash is the same on both little endian and big endian systems. So 
what's needed to convert a string to e.g little endian?

string --> as string is basically a byte array, is byte swapping even 
necessary?
wstring --> read as shorts and swap using nativeToLittleEndian()?
dstring --> read as ints and swap using nativeToLittleEndian()?

Also remotely related questions: AFAIK http://www.ietf.org/rfc/rfc4122.txt 
doesn't exactly specify what encoding/byte order should be used for the UUID 
names? Does this mean different implementations are allowed to generate 
different UUIDs for the same input? (See chapter 'Algorithm for Creating a 
Name-Based UUID')

RFC4122 also says "put the name space ID in network byte order.", but the 
namespace is a ubyte[16], so how should this work?

Should name based UUIDs be different if they were created with the same 
name, but using different encodings(string vs wstring vs dstring)? That's 
the way boost.uuid implements it.


More information about the Digitalmars-d-learn mailing list