組み込みの整数型の容量を超える数値を扱う場合、16 進数の文字列を 10 進数に変換するのが困難になる場合があります。 Golang は、 math/big パッケージで強力なソリューションを提供します。
16 進数の文字列を big.Int に変換するには、SetIntString メソッドを使用します。
package main import "math/big" func main() { // Example hexadecimal string hexString := "0x00000000000000000000000000000000000000000000d3c21bcecceda1000000" // Create a new big.Int i := new(big.Int) // Convert the hexadecimal string to a big.Int i.SetString(hexString, 16) // Print the converted number println(i) }
16 進数の文字列を big.Int に変換した後、Truncate メソッドを使用して 10 進数の表現を切り捨てることができます。例:
func Truncate(x *big.Int, prec uint) { f := new(big.Float).SetInt(x) f.SetPrec(int64(prec)) f.Int(x) }
この関数は、big.Float を big.Int に変換し直す前に、big.Float の精度を目的の小数点以下の桁数に設定します。
fmt パッケージを使用して、big.Int 値を解析してフォーマットできます:
package main import "fmt" func main() { hexString := "0x000000d3c21bcecceda1000000" // Create a new big.Int i := new(big.Int) // Parse the hexadecimal string fmt.Sscan(hexString, i) // Alternatively, you can use fmt.Sscanf // fmt.Sscanf(hexString, "0x%x", i) // Truncate to 18 decimal places Truncate(i, 18) // Marshal to JSON jsonBytes, _ := i.MarshalJSON() fmt.Println(string(jsonBytes)) }
以上がGo の組み込み整数型よりも大きい 16 進文字列を処理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。