Open2

TCP/IPについて学ぶ

UgoUgo

Signed と Unsigned
正の数か、負の数も含めるかの違い。

符号付き整数は、負の数値を表現するために一部のビットを使用します(通常は最上位ビット)。
これに対して、符号なし整数は、すべてのビットを正の数値の表現に使用します。

UgoUgo

エンディアン

バイトオーダー(バイトの並び順)を指すコンピュータの用語です。
特に、複数バイトからなるデータ(例えば32ビットや64ビットの整数)がメモリにどのように格納されるかを指します。

ビッグエンディアン

最も重要なバイト(最上位バイト)が最小のアドレスに格納されます。

リトルエンディアン

最も重要でないバイト(最下位バイト)が最小のアドレスに格納されます。

バイトスワップ

エンディアンを反転する操作のことです。
例えば、4バイト(32ビット)の整数のエンディアンを変換するためのバイトスワップの実装は以下のようになります。

package main

import (
	"encoding/binary"
	"fmt"
)

func main() {
	var x uint32 = 0x12345678

	// Convert to little endian
	bytes := make([]byte, 4)
	binary.LittleEndian.PutUint32(bytes, x)
	fmt.Printf("LittleEndian: %x\n", bytes)

	// Convert to big endian
	binary.BigEndian.PutUint32(bytes, x)
	fmt.Printf("BigEndian: %x\n", bytes)
}