math/big を使用して長い 16 進数の文字列を 10 進表記に解析する
このシナリオでは、次の理由により ParseUint() を使用できなくなります。 int64 のサポート制限。この障害を克服するために、math/big パッケージは 64 ビットの範囲を超えた数値を扱うためのソリューションを提供します。
これにより、大きな 16 進数を処理する際の精度の範囲が広がります。その応用を説明するために、次の例は math/big を使用した代替アプローチを示しています。
package main import ( "fmt" "math/big" ) func main() { s := "0x00000000000000000000000000000000000000000000d3c21bcecceda1000000" i := new(big.Int) // Conversion to a big.Int from a hexadecimal string i.SetString(s, 16) // Print the resulting big.Int fmt.Println(i) }
このプログラムの出力は、変換および拡張された整数値になります。
その他Math/Big インターフェイスのサポート
math/big は、そのコア機能に加えて、エンコーディングのサポートも提供します。TextMarshalerおよび fmt.Scanner インターフェイス。これにより、カスタム データ型とスキャンで大きな整数をシームレスに処理できるようになります。
たとえば、次のコードを考えてみましょう。
package main import ( "fmt" "math/big" ) func main() { i := new(big.Int) // Parsing from a string fmt.Sscan("0x000000d3c21bcecceda1000000", i) // Alternative parsing using fmt.Sscanf fmt.Sscanf("0x000000d3c21bcecceda1000000", "0x%x", i) }
この例では、math/big パッケージによる他のインターフェイスのサポート大きな 16 進数の文字列を 10 進数表記に解析するプロセスを簡素化します。
以上がGo の「math/big」パッケージは、int64 より大きい 16 進文字列をどのように処理できるのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。