encoding - 从十进制转换为十六进制

标签 encoding hex go

我想将一个数字转换为十六进制并将结果存储在一个最大长度为 4 的 []byte 中。 这是我想出的,但感觉很迂回。

package main

import (
    "encoding/hex"
    "fmt"
)

func main() {

    hexstring := fmt.Sprintf("%x", 12345678)
    fmt.Println(hexstring)
    hexbytes, _ := hex.DecodeString(hexstring)
    for {
        if len(hexbytes) >= 4 {
            break
        }
        hexbytes = append(hexbytes, 0)
    }
    fmt.Println(hexbytes)
}

我认为必须有更好的方法来使用 make([]byte, 4)encoding/binary 包,但我无法获得它工作。

沙盒链接:http://play.golang.org/p/IDXCatYQXY

最佳答案

除非我误解了你的问题,否则它根本不是关于十六进制的。您想要获取一个 32 位整数,将其视为 4 个字节,并将这些字节放入 []byte

为此,您需要 encoding/binary< 中的 ByteOrder 类型(实际上,它的子类型 LittleEndianBigEndian)/包。像这样:

package main

import (
"fmt"
"encoding/binary"
)

func main() {

    x := 12345678
    b := [4]byte{}
    binary.LittleEndian.PutUint32(b[:], uint32(x))
    fmt.Println(b)
}

关于encoding - 从十进制转换为十六进制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11015001/

相关文章:

tensorflow - tensorflow Protobuf 中的导入周期

php - 是否可以在不编码的情况下在 PHP $_GET 变量中保留加号?

python - 如何在 Python 中将原始数据存储到 PNG 文件中?

video - H.264码流头

java - 为什么 toHexString 的长度可变?

string - 在 Go 中执行 http 请求时字符串出现乱码

go - Golang 中用于匹配传递的变量和类型的通用函数

javascript - FileReader - 支持哪些编码?

python - Scrapy将奇怪的符号导出到csv文件中

c - 如何从 C 中的文本文件中读取十六进制数据