iT邦幫忙

2026 iThome 鐵人賽

DAY 23
0
Security

新手的30天數位鑑識之旅系列 第 23 篇

23|Big Endian & Little Endian

  • 分享至 

  • xImage
  •  

Endianness

如果只有 1 Byte,就沒有排列順序的問題。
例如:

0x64

但如果一個數字需要多個 Byte 表示,就會遇到「這些 Byte 要怎麼排列、怎麼讀?」的問題。
例如記憶體中有這 4 個 Byte:

12 34 56 78

這串 Byte 到底代表哪個數字?
答案取決於 Endianness:多 Byte 的數值,要用什麼順序排列與解讀。

常見的方式有兩種:Big Endian 與 Little Endian。

同一串 Byte,兩種讀法

記憶體中的 Byte(由前到後):12 34 56 78

Big Endian:先出現的 Byte 是高位

Big Endian 認為,最前面的 Byte 是最高位。

最高位                         最低位
  ↓                              ↓
12        34        56        78

照順序組合起來:

0x12345678

轉成 Decimal:

0x12 × 256³ = 18 × 16777216 = 301989888
0x34 × 256² = 52 × 65536    =   3407872
0x56 × 256¹ = 86 × 256      =     22016
0x78 × 256⁰ = 120 × 1       =       120
                              ─────────
                              305419896

Little Endian:先出現的 Byte 是低位

Little Endian 則相反,最前面的 Byte 是最低位。

最低位                         最高位
  ↓                              ↓
12        34        56        78

要由高位到低位組合,必須把順序反過來:

0x78563412

轉成 Decimal:

0x78 × 256³ = 120 × 16777216 = 2013265920
0x56 × 256² = 86 × 65536     =    5636096
0x34 × 256¹ = 52 × 256       =      13312
0x12 × 256⁰ = 18 × 1         =         18
                               ──────────
                               2018915346

比較

讀法 組合結果 Decimal
Big Endian 0x12345678 305419896
Little Endian 0x78563412 2018915346

同樣是 12 34 56 78,兩種讀法的結果相差超過 17 億。

注意:只有 Byte 的順序反過來,每個 Byte 內部不變(是 78,不是 87)。

小結

最後組合出來的數值,永遠是由高位寫到低位。差別在於記憶體中 Byte 的排列順序:

  • Big Endian:先出現的 Byte 是高位,所以照順序讀下去。

  • Little Endian:先出現的 Byte 是低位,所以要從最後讀回最前。

以 12 34 56 78 為例:

  • Big Endian 讀成 0x12345678

  • Little Endian 讀成 0x78563412


上一篇
22|MFT 深入解析:Resident、Non-Resident、LCN、VCN
下一篇
24|Run List
系列文
新手的30天數位鑑識之旅 共 26 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言