|
|
怕考试的木耳 · 软件分享库合集链接汇总推荐_蓝奏云软件分享链 ...· 6 月前 · |
|
|
精明的日记本 · 江西省发布第三批非法集资严重失信人名单 ...· 1 年前 · |
|
|
奔放的梨子 · Creating Word ...· 2 年前 · |
|
|
奔跑的苦咖啡 · 地藏菩萨本愿经讲记(第十三卷)· 2 年前 · |
|
|
愤怒的菠萝 · 异兽魔都(林田球创作的系列漫画)_搜狗百科· 2 年前 · |
我有一个在
int64
中表示的id。如何将其转换为
[]byte
?我看到二进制包为uint做了这件事,但我想确保我不会破坏负数。
在
int64
和
uint64
之间转换不会改变符号位,只会改变它的解释方式。
可以将
Uint64
和
PutUint64
与正确的
ByteOrder
一起使用
http://play.golang.org/p/wN3ZlB40wH
i := int64(-123456789)
fmt.Println(i)
b := make([]byte, 8)
binary.LittleEndian.PutUint64(b, uint64(i))
fmt.Println(b)
i = int64(binary.LittleEndian.Uint64(b))
fmt.Println(i)
输出:
-123456789
[235 50 164 248 255 255 255 255]
-123456789
在 "encoding/binary" 库中,您可以使用PutVariant([]byte,int64)方法从int64转换为bytes,使用Variant([]byte)从bytes转换为int64,而无需进行任何进一步的转换。这是 Go playgruond 中的代码
buf := make([]byte, 8)
var toBytes int64 = 900
fmt.Printf("toBytes:%d\n", toBytes)
binary.PutVarint(buf, toBytes)
fmt.Printf("buffer:%v\n", buf[:])
fromBytes, _ := binary.Varint(buf)
fmt.Printf("fromBytes:%d\n", fromBytes)
如果你需要一个类似于python中的
int.to_bytes(length, byteorder, *, signed=False)
的函数,你可以这样做:
func uint64ToLenBytes(v uint64, l int) (b []byte) {
b = make([]byte, l)
for i := 0; i < l; i++ {
f := 8 * i
b[i] = byte(v >> f)
return
func int64ToLenBytes(v int64, l int) (b []byte) {
|
|
奔放的梨子 · Creating Word Application using Excel VBA: Run-time error '429': ActiveX component can't create obje 2 年前 |
|
|
奔跑的苦咖啡 · 地藏菩萨本愿经讲记(第十三卷) 2 年前 |
|
|
愤怒的菠萝 · 异兽魔都(林田球创作的系列漫画)_搜狗百科 2 年前 |