Big number to HEX in golang

huangapple go评论87阅读模式
英文:

Big number to HEX in golang

问题

我正在尝试将大数(big.Int 或者更好的 big.Rat)转换为十六进制值。

当数字为负数时,我总是遇到转换问题,特别是像负数 0xff..xx 或者固定数。

有没有一种方法可以解决这个问题?

英文:

I'm trying to convert big numbers (big.Int or even better big.Rat) to hex values.

I'm always having issue converting number when they are negative 0xff..xx or Fixed numbers.

Is there a way to do that?

答案1

得分: 14

不确定你遇到了什么问题,但是big.Intbig.Floatbig.Rat实现了fmt.Formatter接口,你可以使用printf系列函数和**%x** %X将其转换为十六进制字符串表示,例如:

package main

import (
	"fmt"
	"math/big"
)

func toHexInt(n *big.Int) string {
	return fmt.Sprintf("%x", n) // 或者 %x 或者大写的%X
}

func toHexRat(n *big.Rat) string {
	return fmt.Sprintf("%x", n) // 或者 %x 或者大写的%X
}

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

	fmt.Printf("负整数小写:%x\n", a)
	fmt.Printf("负整数大写:%X\n", a) // %X 表示大写

	fmt.Println("使用Int函数:", toHexInt(b))

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

	fmt.Printf("有理数小写:%x\n", f)
	fmt.Printf("有理数大写:%X\n", f)

	fmt.Println("使用Rat函数:", toHexRat(f))
}

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

英文:

Not sure what kind of issues are you having, but big.Int, big.Float and big.Rat implement the fmt.Formatter interface, you can use the printf family with the %x %X to convert to hexadecimal string representation, example:

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 for 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

huangapple
  • 本文由 发表于 2016年12月26日 05:33:53
  • 转载请务必保留本文链接:https://go.coder-hub.com/41324671.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定