2

Linux で c++ を使用して UUID を 128 ビット整数に変換することは可能ですか。UUID を整数に変換したら、TCP 経由で別のサーバーに送信できるように、16 バイトの整数をバイト配列に変換する必要があります。

私の知る限り (間違っていたら訂正してください)、C++ で 16 バイト整数を処理するためのすぐに使えるサポートはありません。これを行う方法を教えてください。整数として保存して送信することができない場合は、uuid を文字列として送信することを考えています。

4

2 に答える 2

4

なぜ128ビット整数として表現したいのですか?

UUID はどのように表されますか? おそらく、それは文字列か、すでに 16 バイトの型です。文字列の場合は、16 バイトの配列表現を自分で計算できます。すでに 16 バイトの long 型である場合は、16 バイトの配列として直接表示できます。

いつものように、何をするにしても、すべての関係者がネットワーク表現のバイト順序に同意していることを確認する必要があります。


C++ 実装は 128 ビットの整数型を持つ必要はありませんが、組み込み型の 1 つが 128 ビットである場合があります。long long多分。または、実装によって、使用できる拡張整数型が提供される場合があります。

Clang と GCC はどちらも __uint128_t 型をサポートしていると思いますが、残念ながら、この型の拡張整数に対する C++ の要件には従っていません。ただし、128 ビットの算術演算は機能するはずなので、UUID をこの型に貼り付けて、それを 16 バイト配列として表示する通常の操作を実行できるはずです。

于 2012-05-21T13:36:57.653 に答える
0

C++ で 16 バイト整数を実装するには、
http ://straymindcough.blogspot.com/2012/01/on-int128t.html を参照してください。

に関しては:「Linuxでc ++を使用してUUIDを128ビット整数に変換することは可能ですか」。答えはイエスです。

敬具、
ボー

于 2012-05-21T13:34:42.077 に答える