2016-10-21 7 views
1

のGolang相当、structモジュールを使用して、私は文字列として値のパック表現を取得するには、このような何かを行うことができます。PythonでPythonのstruct.pack/struct.unpack

import struct 
print struct.pack('L', 64) 
"@\x00\x00\x00\x00\x00\x00\x00" 
struct.unpack('L', '@\x00\x00\x00\x00\x00\x00\x00') 
(64,) 

私は思いますGoでこれと似たようなことをしていますが、私はそうする方法が少し不明です。私はこのような何かを行うことができます知っている:

import (
    "encoding/binary" 
    "fmt" 
) 

bs := make([]byte, 8) 
binary.PutUvarint(bs, uint64(64)) 
fmt.Printf("%s", bs) 
"@" 

をしかし、それは私が欲しいものはおそらくない非常に違うと。

答えて

1

はい、「encoding/binary」は必要なものです。可変長フォーマットは必要ありません。

https://play.golang.org/p/e81LuPO_JR

bs := make([]byte, 8) 
binary.LittleEndian.PutUint64(bs, uint64(64)) 
fmt.Printf("%#v\n", bs) 

i := binary.LittleEndian.Uint64(bs) 
fmt.Println(i) 
+0

第一は、従うのは簡単だし、その限界が明確である主旨であります-dog、JFTRは、 'encoding/binary'がバイナリデータを値から' '構造体の' '型' 'の変数に整列化および非整列化できることを覚えておいてください。複雑なバイナリストライドカスタム 'struct'と' back'に正しく反映されます。 – kostix

+0

@ xaav:どういう意味なのか分かりませんが、この例ではゼロ以外の引数をデコードしています。 – JimB