簡體   English   中英

golang中十六進制的大數字

[英]Big number to HEX in golang

我正在嘗試將大數字( big.Int甚至更好big.Rat )轉換為十六進制值。

當它們為負 0xff..xx 或固定數字時,我總是遇到轉換數字的問題。

有沒有辦法做到這一點?

不確定您遇到了什么樣的問題,但是 big.Int、big.Float 和 big.Rat 實現了fmt.Formatter接口,您可以使用帶有%x %X的 printf 系列轉換為十六進制字符串表示,例如:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM