golang中HEX的大数字

时间:2016-12-25 21:33:54

标签: go hex bignum

我正在尝试将bignumbers(big.Int甚至更好的big.Rat)转换为Hex值。

当它们为负0xff..xx或固定数字时,我总是有转换号码的问题。

有办法吗?

1 个答案:

答案 0 :(得分:3)

不确定你有什么问题,但是big.Int,big.Float和big.Rat实现fmt.Formatter界面,你可以使用%x %X 转换为十六进制字符串表示形式,例如:

package main

import (
    "fmt"
    "math/big"
)

func toHexInt(n *big.Int) string {
    return fmt.Sprintf("%x", n) // or %X or upper case
}

func toHexRat(n *big.Rat) string {
    return fmt.Sprintf("%x", n) // or %X or upper case
}

func main() {
    a := big.NewInt(-59)
    b := big.NewInt(59)

    fmt.Printf("negative int lower case: %x\n", a)
    fmt.Printf("negative int upper case: %X\n", a) // %X or upper case

    fmt.Println("using Int function:", toHexInt(b))

    f := big.NewRat(3, 4) // fraction: 3/4

    fmt.Printf("rational lower case: %x\n", f)
    fmt.Printf("rational lower case: %X\n", f)

    fmt.Println("using Rat function:", toHexRat(f))
}

https://play.golang.org/p/BVh7wAYfbF