✨
エンディアンについてGoで見てみる
エンディアンとは
エンディアン(英: endianness)は、複数のバイトなどを並べる順序の種類である。一般的な用語による表現ではバイトオーダ(英: byte order)、ないしそれを一部訳して日本語ではバイト順とも言う。
なるほど。バイトを並べる順序が1種類ではなく、しかもそれを開発する際に意識しないといけないのはめんどくさそうですね。
実際にみてみましょう!
package main
import (
"bytes"
"encoding/binary"
"fmt"
)
func main() {
bigEndData := []byte{0x0, 0x0, 0x27, 0x10}
var i int32
binary.Read(bytes.NewReader(bigEndData), binary.BigEndian, &i)
fmt.Println(i)
littleEndData := []byte{0x10, 0x27, 0x0, 0x0}
var newI int32
binary.Read(bytes.NewReader(littleEndData), binary.LittleEndian, &newI)
fmt.Println(newI)
}
実行結果
10000
10000
両方10000と表示されましたね。binary.Read()
でビッグエンディアンを読む際はリトルエンディアンに変換してくれていますね。
実務でエンディアンの変換をすることがあったのでまとめてみましたが、Go言語で簡単に実装できてよかった~
Discussion