go - 如何将十六进制字节 slice 转换为整数

标签 go

我将一个以 10 为基数的整数转换为十六进制字符串,然后再将其存储到文件中:

str := fmt.Sprintf("%08x", 1662489944)

b, _ := hex.DecodeString(str)

file.Write(b) //seems to write 63179558

是的,我知道这可能看起来很愚蠢,而且我毫不怀疑有更好的方法可以做到这一点:我想用前导 0 填充这个值。

当我读取文件的内容时,我得到了一个 byte slice 段:

[]byte{63, 17, 95, 58}

如何将此 slice 转换回以 10 为基数的值 1662489944(32 位)?

最佳答案

以下代码将值作为四字节大端数写入文件。

str := fmt.Sprintf("%08x", 1662489944)
b, _ := hex.DecodeString(str)
file.Write(b)

使用此代码来反转转换:

b = make([]byte, 4)
io.ReadFull(file, b)
n := int(binary.BigEndian.Uint32(b))

PlayGround example .

这是一种更直接的方法,可以将数字作为四字节大端数字写入文件。

b := make([]byte, 4)
binary.BigEndian.PutUint32(b, 1662489944)
file.Write(b)

关于go - 如何将十六进制字节 slice 转换为整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73982100/

相关文章:

go - 该方法不应该明确地与接口(interface)的签名签约吗?

api - 我可以在我的 Go 程序中直接使用 go-ipfs 吗?

go - 如何使用 Go 的 Delve 和 Visual Studio Code 将对象的值 "print"发送到控制台?

Go: *Var 是 Var 的 "subclass"吗?

google-app-engine - 这些 GAE 库之间有什么区别?

go - 查找与截断以增加(预分配)文件大小

xml - 如何在生成 XML 时省略 GO 中的空字段

go - 在 Golang 中将 Slice 附加到结构

Golang导入路径最佳实践

postgresql - 当我在 db(这里是 postgres)中的结构未知时,如何检索 GoLang 数据库/sql 中的值?