大小端轉換

來源位元組(記憶體)

↓ 位元組序已轉換 ↓

結果位元組(記憶體)

# 輸入 hex 輸出 hex 無號 有號 二進位

位元組序轉換器

這是位元組序轉換器:把多位元組 hex 值在記憶體裡的順序對調。 Endianness 是多位元組值在記憶體中的順序。0x12345678 的 big-endian 是 12 34 56 78,little-endian 是 78 56 34 12,PDP 是 34 12 78 56。顯示範例為 32 位、big-endian → little-endian。兩個字 AA BB CC DD 11 22 33 44 交換後是 DD CC BB AA 44 33 22 11;全部倒序是 44 33 22 11 DD CC BB AA。

如何使用

  1. 貼上 hex。長度須為 2、4 或 8 的倍數(全部倒序除外)。
  2. 選 16 / 32 / 64 位。每個字獨立轉換。
  3. 來源與目標可為 big-endian、little-endian 或 PDP。對調 ⇄ 把結果填回。
  4. 看色塊、表格與 __builtin_bswap 片段。

記憶體配置與數值

左邊是位址 0。little-endian 把最低有效位元組放在最低位址。uint8_t 沒有位元組序。

網路位元組序與 C

TCP/IP 是 big-endian(RFC 1700)。little-endian 主機用 htons/htonl。浮點請用 memcpy,不要把 float* 轉成 uint32_t*。

PDP / 中端

PDP-11 的 32 位是 34 12 78 56 這種混合序。

常見問題

  • 3 位元組配 32 位? 需要 4 的倍數。
  • 全部倒序等於逐字交換? 多個字時不同。
  • 浮點? 搭配 IEEE 754。

相關工具

浮點用 IEEE 754。Dump 用 Hex Dump。整數用 十六進位轉十進位。

要處理整數值? 十六進位轉十進位 →