encoding/binary パッケージを使います。
package main import ( "encoding/binary" "fmt" ) func main() { src := int64(123456789123456789) result := make([]byte, binary.MaxVarintLen64) binary.PutVarint(result, src) fmt.Printf("Bytes: %X", result) // Bytes: AAFC82CDF5D2CDB60300 }
変換後の []byte のサイズが小さいとクラッシュしてしまいます。
binary パッケージに変換元のデータ型に合わせて []byte の長さが定義されています。
int64 を変換するなら binary.MaxVarintLen64 といった具合です。
変換では各バイトの先頭ビットを continuation bit として使用しているため、
int64 だからといって 8 バイトになる訳ではなく、決め打ちするとクラッシュすることがあります。
binary package source - Go Lang
http://golang.org/src/pkg/encoding/binary/varint.go?m=text
0 件のコメント:
コメントを投稿