PostgreSQL ストレージ用に uint64 を int64 に変換する
符号付き 64 ビット整数のみをサポートする PostgreSQL で uint64 値のストレージを処理するには(BIGINT) の場合、単純な型変換が最も効果的です。このアプローチでは、uint64 値を int64 にキャストするときにそのバイナリ表現が保持されます。
次の Go コードを考えてみましょう。
import ( "fmt" ) func main() { i := uint64(0xffffffffffffffff) // Example uint64 value // Cast the uint64 to int64 using a type conversion i2 := int64(i) fmt.Println(i, i2) }
このコードの出力は次のとおりです。
18446744073709551615 -1
ご覧のとおり、uint64 値 (18446744073709551615) から int64 値 (-1) への型変換は成功しています。これは、uint64 と int64 の間の数値変換ではメモリ表現は変更されず、型の解釈のみが変更されるためです。
ただし、注意すべき点は、int64 値を超える型なし整数定数を変換しようとした場合です。範囲を超えた場合、コンパイル時エラーが発生します。例:
i3 := int64(0xffffffffffffffff) // Compile time error!
このエラーは、定数値 0xffffffffffffffff が int64 値の範囲 (0x7fffffffffffffff) をオーバーフローしているために発生します。
以上がuint64 値を PostgreSQL の int64 フィールドに安全に保存するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。