La conversion de chaînes hexadécimales en nombres décimaux peut être un défi lorsqu'il s'agit de nombres qui dépassent la capacité des types entiers intégrés . Golang fournit une solution puissante avec son package math/big.
Pour convertir une chaîne hexadécimale en big.Int, utilisez la méthode 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) }
Après la conversion du chaîne hexadécimale en big.Int, vous pouvez tronquer la représentation décimale à l'aide de la méthode Truncate. Par exemple :
func Truncate(x *big.Int, prec uint) { f := new(big.Float).SetInt(x) f.SetPrec(int64(prec)) f.Int(x) }
Cette fonction définit la précision du big.Float sur le nombre de décimales souhaité avant de le reconvertir en big.Int.
Vous pouvez utiliser le package fmt pour analyser et formater les valeurs 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)) }
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!