数値型
byte alias for uint8
byte
は のエイリアスであるため、uint8
「4 バイト配列を uint32 に変換する必要がある」という質問には既に回答があります。
Goで[4]uint8をuint32に変換するには?
パッケージ バイナリ
[Uvarints と] Varints は、1 つ以上のバイトを使用して整数をエンコードする方法です。絶対値が小さい数値ほど、バイト数が少なくなります。仕様については、
http://code.google.com/apis/protocolbuffers/docs/encoding.htmlを参照してください。
Uvarint
s は整数表現とストレージの特殊な形式であるため、関数で書き込まれた値に対してのみ関数を使用する必要がありReadUvarint
ますUvarint
。
例えば、
package main
import (
"bytes"
"encoding/binary"
"fmt"
)
func main() {
buf := make([]byte, 10)
x := uint64(0xFFFFFFFF)
fmt.Printf("%2d %2d %v\n", x, len(buf), buf)
n := binary.PutUvarint(buf, x)
buf = buf[:n]
fmt.Printf("%2d %2d %v\n", x, len(buf), buf)
y, err := binary.ReadUvarint(bytes.NewBuffer(buf))
if err != nil {
fmt.Println(err)
return
}
fmt.Printf("%2d %2d %v\n", y, len(buf), buf)
}
出力:
4294967295 10 [0 0 0 0 0 0 0 0 0 0]
4294967295 5 [255 255 255 255 15]
4294967295 5 [255 255 255 255 15]