すべて。非常に奇妙な問題に直面しています。(私が眠るべき時はずっと過ぎているかもしれません、そして私は何か明白なものを見落としています。)
[]byte
いくつかの16進デコードの結果として、長さが8のaがあります。使用するにはを作成する必要がありuint64
ます。binary.Uvarint()
、fromを使用してみencoding/binary
ましたが、配列の最初のバイトしか使用していないようです。次の例を考えてみましょう。
package main
import (
"encoding/binary"
"fmt"
)
func main() {
array := []byte{0x00, 0x01, 0x08, 0x00, 0x08, 0x01, 0xab, 0x01}
num, _ := binary.Uvarint(array[0:8])
fmt.Printf("%v, %x\n", array, num)
}
それが実行されると、16進数では。である必要がありますが、num
として表示されます。さらに、から2番目の値を取得した場合、それはバッファから読み取られたバイト数です。これは、実際には1ですが、私の知る限り、8である必要があります。0
000108000801ab01
binary.Uvarint()
私はこれを間違って解釈していますか?もしそうなら、私は代わりに何を使うべきですか?
ありがとう、みなさん。:)