ハッシュ関数出力用に uint64 を int64 に変換する
murmur2 などの uint64 値を返すハッシュ関数を操作し、結果を保存する場合BIGINT (int64) のみをサポートする PostgreSQL のようなデータベースでは、 uint64 から int64 へ。
解決策: 型変換
最も簡単な解決策は、型変換を使用することです。
i := uint64(0xffffffffffffffff) i2 := int64(i)
この変換は次のように成功します。メモリ表現は変更されず、型のみが変更されます。結果の int64 値は、元の uint64 と同じバイナリ表現になります。
出力:
18446744073709551615 -1
補足:
型なしの整定数値を直接 int64 に変換すると、定数値が int64 の範囲に収まらない可能性があるため、コンパイル時にエラーが発生します。例:
i3 := int64(0xffffffffffffffff) // Compile time error!
これは、定数値 0xffffffffffffffff の精度が任意であり、int64 の最大値である 0x7ffffffffffffff を超えているためです。
以上がデータベースストレージ用に uint64 ハッシュ出力を int64 に安全に変換する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。