長い 16 進数文字列を高精度で uint に解析する
長い 16 進数文字列を高精度で 10 進数表記に変換することは、さまざまなプログラミングで一般的なタスクですシナリオ。ただし、Go のデフォルトの ParseInt()/ParseUint() 関数には、64 ビット精度を超える数値を扱う場合に制限があります。
この問題に対処するには、推奨されるアプローチは、次の math/big パッケージを利用することです。行く。このパッケージは、任意のサイズの整数の操作をサポートし、標準の int64 型が対応できるよりもはるかに大きな数値を処理できるようにします。
高精度解析に math/big を使用する
math/big パッケージは、任意の整数を表す big.Int 型を提供します。精度。 16 進文字列を big.Int に変換するには、次の手順を使用できます。
math/big の例
例は次のとおりです。 math/big を使用して長い 16 進文字列を解析してbig.Int:
import ( "fmt" "math/big" ) func main() { s := "0x00000000000000000000000000000000000000000000d3c21bcecceda1000000" i := new(big.Int) i.SetString(s, 16) fmt.Println(i) }
このコードは、指定された 16 進文字列を big.Int に変換し、結果を出力します。
math/big の追加機能
math/big パッケージは、encoding.TextMarshaler インターフェイスと fmt.Scanner インターフェイスのサポートも提供します。これにより、テキストベースのソースとの間で big.Int 値を簡単に読み書きできるようになります。
たとえば、fmt.Sscan():
を使用して 16 進文字列を解析するには、次の構文を使用できます。var i big.Int fmt.Sscan("0x000000d3c21bcecceda1000000", &i)
あるいは、fmt.Sscanf() を使用して 16 進文字列を直接解析して、 big.Int:
var i big.Int fmt.Sscanf("0x000000d3c21bcecceda1000000", "0x%x", &i)
以上がGo で非常に大きな 16 進数の文字列を高精度で整数に解析するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。