Big Endian and Little Endian in Golang and .Net

Big Endian and Little Endian in Golang and .Net

最近用 Golang 寫一段程式來讀取 .Net 寫進 Redis 的 byte 資料,但意外發現在 .Net 裡面寫入 byte 時是 Little Endian(BinaryFormatter)。

在 Golang 裡面讀取時,有直接區分 BigEndian & LittleEndian。

所謂的 BigEndian 就是寫入 byte 時是由「左」向「右」寫入;反過來,LittleENdian 就是在寫入時由「右」向「左」寫入。

例:\x02 \x01 如果是 BigEndian 讀出時結果會是 513,但如果是 LittleEndian 讀出時結果會是 258。

所以在不同的語言實作時,還是要先了解一下各語言的實作方式。

參考連結

Big-Endian 與 Little-Endian 的差異與判斷程式碼

Endianness

var result := int32(binary.LittleEndian.Uint32(sourceByte))
var result := int32(binary.BIgEndian.Uint32(sourceByte))