ホームページ >バックエンド開発 >Golang >サイズ制限があるにもかかわらず、uint64 ハッシュ値を PostgreSQL の BIGINT に保存するにはどうすればよいですか?

サイズ制限があるにもかかわらず、uint64 ハッシュ値を PostgreSQL の BIGINT に保存するにはどうすればよいですか?

DDD
DDDオリジナル
2024-12-01 01:57:10981ブラウズ

How Can I Store uint64 Hash Values in PostgreSQL's BIGINT Despite Size Limitations?

PostgreSQL ストレージで意図的に整数がオーバーフローする

PostgreSQL の BIGINT データ型 (符号付き) のサイズを超える uint64 ハッシュ値を格納するコンテキストで64 ビット)、一般的な解決策は、uint64 を int64 に変換することです。バイナリ表現を変更せずに型を変更するだけです。

解決策:

i := uint64(0xffffffffffffffff)
i2 := int64(i)

この型変換を使用すると、uint64 値は維持されたまま int64 変数に代入されます。元のバイナリ表現。これが可能なのは、変換によって値のメモリ表現は変更されず、その型のみが変更されるためです。

出力:

18446744073709551615 -1

uint64 から int64 への変換は常に行われます。値に関係なく成功します。ただし、型なしの整定定数値を int64 に変換すると、int64 で表現できる最大値 (0x7fffffffffffffff) を超えるとコンパイル時エラーが発生する可能性があることに注意することが重要です。

以上がサイズ制限があるにもかかわらず、uint64 ハッシュ値を PostgreSQL の BIGINT に保存するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。