Skip to main content
AtoolinBlog
All PostsEN

什麼是文字轉 Binary?電腦如何用 0 和 1 儲存文字

By Hans6 分鐘閱讀

你輸入的每個字元,不管是英文字母還是標點符號,最終都會以一連串 0 和 1 儲存在記憶體中。電腦本身不懂人類語言,只認得 binary 數字。編碼標準負責把每個字元對應到一個特定數字,再轉成 binary。文字轉 binary 轉換,就是把這個對應關係攤開來看。

為什麼電腦使用 Binary

電腦由電晶體組成,這些微小的電子開關只有「開」跟「關」兩種狀態。開就是 1,關就是 0。所有資料都是這兩種狀態的排列組合。

為什麼偏偏選兩種狀態?因為電子元件要可靠地區分兩個電壓高低很容易,但如果在極小的晶片裡要區分十個電壓等級,錯誤率會飆升。兩種狀態是工程上最務實的做法。

文字如何被編碼為 Binary 數字

要儲存文字,電腦需要一張對照表,把每個字元指定一個數字。最關鍵的標準是 ASCII(American Standard Code for Information Interchange,美國資訊交換標準碼),1963 年發布。

ASCII 用 0 到 127 的數字代表各個字元。大寫「A」是 65,小寫「a」是 97,數字「5」是 53,空格是 32。

把字元轉成 binary,就是把它的 ASCII 數字轉成二進位。65 轉出來是 01000001,共八個位數,稱為 bit。一個 byte 有 8 個 bit,可以表示 0 到 255 的值,比 ASCII 的 128 個字元所需的範圍還大。

ASCII 轉 binary 對照表

字元 ASCII 十進位 Binary
A 65 01000001
B 66 01000010
a 97 01100001
z 122 01111010
0 48 00110000
9 57 00111001
空格 32 00100000
! 33 00100001

單字「Hi」的 binary 表示:01001000 01101001。「H」是 72,佔八個 bit;「i」是 105,也佔八個 bit。

ASCII 和 UTF-8 的差別

ASCII 涵蓋 128 個字元,英文夠用,但世界上大部分文字系統都涵蓋不到。UTF-8 在 1993 年推出,就是為了補這個缺口。

UTF-8 向下相容 ASCII:code point 低於 128 的字元使用同樣的單一 byte。超出範圍的字元則用 2 到 4 個 byte 表示。中文字「中」的 Unicode code point 是 U+4E2D,UTF-8 編碼為三個 byte:11100100 10111000 10101101

UTF-8 目前處理超過 14 萬個字元,涵蓋 159 種書寫系統。根據 W3C Web Almanac 統計,截至 2024 年約有 98% 的網頁使用 UTF-8。你在現代應用程式裡輸入文字時,背後幾乎都是 UTF-8 在運作。

文字轉 Binary 的轉換流程

轉換過程是固定的:

  1. 逐一取出文字中的每個字元。
  2. 找到該字元的 Unicode code point(ASCII 字元的 code point 和 ASCII 編號一致)。
  3. 用 UTF-8 將 code point 編碼為 byte。
  4. 把每個 byte 轉成 8-bit binary 表示。

拿「Cat」當例子:

  • C → 67 → 01000011
  • a → 97 → 01100001
  • t → 116 → 01110100

結果:01000011 01100001 01110100

想即時將文字轉成 binary,可以用免費的文字轉 Binary 工具。貼上文字就能拿到 binary 輸出,不用手動查表。

從 Binary 轉回文字

解碼步驟正好反過來。把每組 8 個 bit 取出,binary 轉成十進位數字,再查表找到對應字元。

01000001 → 65 → 「A」

編碼和解碼必須用相同標準。如果用 UTF-8 編碼,卻拿 Latin-1 來解碼,超出 ASCII 範圍的字元就會變成亂碼。這種問題叫 mojibake(文字化け),在早期 email 程式和沒有記錄編碼方式的資料庫中很常見。

文字轉 Binary 轉換的應用場景

程式設計課程常用它來教資料型別和 bitwise 運算。用 Wireshark 做網路協定除錯時,需要看到 byte 層級,搞清楚哪些 bit 對應哪些字元。CTF(Capture the Flag)資安競賽也常用 binary 編碼訊息。隱寫術(steganography)把文字的 bit 塞進像素值的最低有效位,藏文字在圖片裡。密碼學的 hash 函式對輸入文字的 binary 表示做運算,所以編碼方式一致才能產生一致的 hash。

FAQ

字母 A 的 binary 碼是什麼?

大寫「A」的 ASCII 值是 65,8-bit binary 是 01000001。小寫「a」的十進位值是 97,binary 是 01100001。ASCII 替大寫和小寫字母分配了不同的 code point,所以 binary 也不同。

Binary 和 ASCII 是一樣的嗎?

不一樣。Binary 是只用 0 和 1 的數字系統,ASCII 是把字元對應到數字的編碼標準。文字轉 binary 時,先用 ASCII 或 UTF-8 取得字元的數字,再把數字轉成 binary。一個是格式,一個是對應規則。

一個字元在 binary 中佔幾個 bit?

標準英文字母、數字和基本標點在 ASCII 和 UTF-8 中都佔 8 個 bit(1 byte)。帶重音的拉丁字母和不少貨幣符號用 2 個 byte,大多數亞洲文字用 3 個 byte,emoji 和部分罕用文字用 4 個 byte。