我将一个以 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))
这是一种更直接的方法,可以将数字作为四字节大端数字写入文件。
b := make([]byte, 4)
binary.BigEndian.PutUint32(b, 1662489944)
file.Write(b)
关于go - 如何将十六进制字节 slice 转换为整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73982100/