我想将一个数字转换为十六进制并将结果存储在一个最大长度为 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
包,但我无法获得它工作。
最佳答案
除非我误解了你的问题,否则它根本不是关于十六进制的。您想要获取一个 32 位整数,将其视为 4 个字节,并将这些字节放入 []byte
。
为此,您需要 encoding/binary< 中的
包。像这样:ByteOrder
类型(实际上,它的子类型 LittleEndian
和 BigEndian
)/
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/