私のc++プログラムでは、debian linuxのuuidパッケージを使用してuuid値を生成しています。これにより、uuid_t型のサイズ16のunsignedchar配列が返されます。次に、それを文字列に変換してコンソールに出力します。
次に、同じバイト配列を取得して、ネットワーク経由でWindowsマシンに送信します。Windowsマシンは.netのGUIDタイプを使用し、同じバイト配列を使用してGUIDオブジェクトを作成します。次に、GUIDのToStringメソッドを使用して、コンソールに再度出力します。驚くべきことに、Linuxと.Netでは、ほとんど同じですが、同じバイト配列の文字列表現が異なります。
次に例を示します。
バイト配列:
101,208,176,173,236,192,64,86,191,214,132,2,213,232,143,247
Linux:65d0b0ad-ecc0-4056-bfd6-8402d5e88ff7
.NET:adb0d065-c0ec-5640-bfd6-8402d5e88ff7
お気づきかもしれませんが、最後の部分は同じで、最初の部分は同じ数字を使用しており、数字の順序だけが異なります。上で説明した方法で作成したすべてのUUIDは同じパターンに従っており、バイト順序の違いがあると思います。
LinuxでUUID値を作成し、同じバイト配列を使用して同じ文字列表現を使用するにはどうすればよいですか。