我有一个 id 代表 int64
。我如何将其转换为 []byte
?我看到二进制包为 uint 执行此操作,但我想确保我不会破坏负数。
原文由 Charles L. 发布,翻译遵循 CC BY-SA 4.0 许可协议
我有一个 id 代表 int64
。我如何将其转换为 []byte
?我看到二进制包为 uint 执行此操作,但我想确保我不会破坏负数。
原文由 Charles L. 发布,翻译遵循 CC BY-SA 4.0 许可协议
如果您不关心符号或字节序(例如,地图的散列键等原因),您可以简单地移动位,然后将它们与 0b11111111 (0xFF) 进行运算:
(假设 v 是一个 int32)
b := [4]byte{
byte(0xff & v),
byte(0xff & (v >> 8)),
byte(0xff & (v >> 16)),
byte(0xff & (v >> 24))}
(对于 int64/uint64,你需要有一个长度为 8 的字节片)
原文由 ahmet alp balkan 发布,翻译遵循 CC BY-SA 4.0 许可协议
7 回答5.3k 阅读
6 回答6.8k 阅读✓ 已解决
4 回答2.3k 阅读
1 回答3.4k 阅读
2 回答931 阅读✓ 已解决
2 回答2.3k 阅读
1 回答2.2k 阅读
在
int64
和uint64
之间转换不会改变符号位,只会改变它的解释方式。您可以使用
Uint64
和PutUint64
以及正确的ByteOrder
http://play.golang.org/p/wN3ZlB40wH
输出: