Golang 16进制字符串 转成 10进制数值
问题描述: 将表示十六进制数值的字符串类型(0xb6995e6b087fc99e0000)转换为uint类型,使用以下方法报错:
func Hex2Dec(val string) uint64 {
val = val[2:]
n, _ := strconv.ParseUint(val, 16, 64)
return n
}
因为unit最大值为18446744073709551615,所以无法完成转换。
故采用以下方法进行转换:
通过 big.Int 将16进制字符串转为10进制数值
byteValue, err := hex.DecodeString("b6995e6b087fc99e0000")
if err != nil {
fmt.Println(err)
}
IntValue := new(big.Int).SetBytes(byteValue)
IntValue2 := new(big.Int).SetInt64(1000000000000000000)
fmt.Println("IntValue==>", IntValue)
fmt.Println("IntValue2==>", IntValue2)
fmt.Println(IntValue.Mul(IntValue, IntValue2))
运行结果为:
Int