エンディアンについてGoで見てみる

2023/03/10に公開

エンディアンとは

エンディアン(英: 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