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 중국어 웹사이트의 기타 관련 기사를 참조하세요!