10
我有一個代表int64
的編號。我怎樣才能將其轉換爲[]byte
?我發現二進制包對這些提示做了這個,但我想確保我不會破壞負數。如何將int64轉換爲字節數組?
我有一個代表int64
的編號。我怎樣才能將其轉換爲[]byte
?我發現二進制包對這些提示做了這個,但我想確保我不會破壞負數。如何將int64轉換爲字節數組?
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
代碼:
var num int64 = -123456789
// convert int64 to []byte
buf := make([]byte, binary.MaxVarintLen64)
n := binary.PutVarint(buf, num)
b := buf[:n]
// convert []byte to int64
x, n := binary.Varint(b)
fmt.Printf("x is: %v, n is: %v\n", x, n)
輸出
x is: -123456789, n is: 4
嗨,我應該使用常量'MaxVarintLenXX'來確定放置之前的緩衝區大小嗎? –