-1

6 バイトのスライスをリトル エンディアン エンディアンに変換したいと考えています。

バイト スライスを使用して配列を解析し、バイナリ パッケージの読み取り機能を使用してリトル エンディアンに変換しています。しかし、{05,00,00,00,00,00} などの 6 バイトのスライスを解析すると、データ インターフェイスが uint64 でゼロ (16 進数表記) が返されます。上記の関数をハードコーディングせずに使用してこれを行う方法はありますか。残りの 2 バイトのゼロをパディングすると、結果が得られますが、どういうわけか、パーサーが配列の次の 2 バイトを見逃すことに注意してください。

あなたの助け/提案をありがとう。

4

1 に答える 1

1

手でデコードします。それは些細なことです:

b := []byte{5,0,0,0,0,0,0}
i := uint64(b[0]) |
     uint64(b[1]) << 8 |
     uint64(b[2]) << 16 |
     uint64(b[3]) << 24 |
     uint64(b[4]) << 32 |
     uint64(b[5]) << 40
于 2013-09-26T19:34:03.310 に答える