要說明如何將文字轉換為二進位數字,請將字串中每個 UTF-8 位元組視為恰好八位、以零填補的位元,然後用一個普通空格連接這些八位元群組。在此模型中,"A" 是一個位元組 (01000001),帶重音字母 "é" 是兩個位元組 (11000011 10101001),歐元符號 "€" 是三個位元組 (11100010 10000010 10101100),表情符號 "😀" 是四個位元組 (11110000 10011111 10011000 10000000)。這種對應關係並非「一個字元等於八個位元」,因為一個 Unicode 字元依其碼點位置,可能佔用一到四個 UTF-8 位元組。因此輸出是一連串完整的、具名的位元組——也就是系統儲存在磁碟上的同樣位元組——以二進位表示,並加以分隔使每個群組清楚無歧義。反向操作意味著以每群組恰好八個二進位數字、群組間以一個空格分隔的方式進行解析,然後將這些位元組送入嚴格的 UTF-8 解碼器;任何格式錯誤的序列都會產生明確的嚴重錯誤,而不會被替換為 Unicode 替換字元 U+FFFD。理解這種可變寬度的位元組表示法,正是描述真正的文字轉二進位轉換,與僅僅複述 ASCII 數字之間的差別。

大多數人第一次接觸二進位,是透過教室裡將每個字母與整整齊齊一列八個 0 和 1 配對的圖表。對於英文字母和 0 到 9 的數字而言,這樣的圖像沒問題,但一旦字串中包含重音記號、非拉丁文字或表情符號時就會失效。在每個作業系統、網路請求和原始檔案之下,都是 WHATWG 編碼標準所記載的 UTF-8 位元組序列。一個位元組永遠恰好是八個位元,每個字元所佔的位元組數由 Unicode 碼點決定,而非由「一個字元、一個位元組」的固定規則決定。文字轉二進位轉換器 只是將該位元組序列以可讀文字的形式呈現,使每個位元組都可計算、可複製、可驗證。

describe how to convert text to binary numbers
describe how to convert text to binary numbers

文字變成的是位元組,而非單一數字

轉換是基於位元組而非字母運作,而位元組遵循嚴謹且有記載的結構。ASCII 字元——涵蓋英文字母、數字和常見標點——位於 Unicode 標準中的 U+0000 到 U+007F,編碼時永遠是高位元為零的單一位元組。下一個範圍內的字元,包括帶重音的拉丁字母、希臘文、斯拉夫文、阿拉伯文和希伯來文,使用兩個位元組,在定義明確的位置上以前導位元 110 和 10 編碼。基本多語言平面的大部分字元,包括 CJK 漢字和常見的貨幣符號,佔用三個位元組。輔助字元(包括大多數表情符號和罕見的歷史文字)佔用四個位元組,位於 U+FFFF 之上。

碼點範圍每字元位元組數典型範例
U+0000 到 U+007F1 個位元組"A"、"7"、"?"
U+0080 到 U+07FF2 個位元組"é"、"ñ"、"Ω"
U+0800 到 U+FFFF(BMP,不含代理項)3 個位元組"€"、"中"、"★"
U+10000 到 U+10FFFF(輔助平面)4 個位元組"😀"、"𝕊"、古代文字

此表格中的位元組數目取自 WHATWG 編碼標準,並適用於每個相容的 UTF-8 實作;針對特定輸入所產生的精確序列,正是您按下「轉換」後轉換器所顯示的內容。

逐步將文字轉換為二進位

文字轉二進位轉換器透過三項瀏覽器端操作套用此機制。一切都在本機透過標準的 TextEncoder 進行編碼,反向則使用嚴格的 TextDecoder,您的輸入不會上傳到網路。

  1. 開啟文字轉二進位轉換器,並選擇「文字轉 UTF-8 二進位」模式。
  2. 在輸入欄位中輸入或貼上要轉換的字串。編碼器接受最多 20,000 個 UTF-16 碼單位的字串,足以容納冗長的段落或數頁純文字。
  3. 選擇「轉換」並檢視輸出下方的位元組計數。每個 UTF-8 位元組都會以恰好八位、以零填補的位元呈現,並以一個 ASCII 空格分隔。
  4. 將結果複製到剪貼簿,以便在程式碼、文件、練習題或另一個分頁中使用。

一個小型的實作範例能讓位元組結構一目了然。以 "Hi" 這個單字為例,它是兩個 ASCII 字元。

步驟 1 —— 碼點:在 Unicode 標準中,"H" 是 U+0048,"i" 是 U+0069。

步驟 2 —— UTF-8 位元組:兩個字元都落在 ASCII 範圍內,因此各編碼為單一位元組:0x48 和 0x69。

步驟 3 —— 二進位形式,每個各八位數:0x48 = 01001000,0x69 = 01101001。

步驟 4 —— 以一個空格連接:01001000 01101001,恰好兩個位元組對應兩個字元。

若將 "Hi" 換成 "Hé",第二個字元需要兩個位元組 (0xC3 0xA9),輸出便會從兩個位元組成長為三個位元組。這種可見的成長,正是證明轉換器呈現的是位元組,而非每字元的二進位檢視。

為何每個群組必須恰好八個位元

解碼器強制嚴格的分群,因為任何較寬鬆的規則都會使結果產生歧義。八位元群組對應一個位元組,而位元組是 UTF-8 解碼器所消耗的最小單位。若群組只有七位或九位,解析器將無法判斷缺少或多出的位元應歸於哪一側;若群組以 Tab、逗號或連續多個空格分隔,標記器會在解碼器看到任何位元組之前就失敗。因此,轉換器僅接受 [01]{8}( [01]{8})* 的正規語法,不接受前置或後置空白,也不接受如 "0b" 這類前綴。

同樣的嚴格性也適用於解碼端。格式錯誤的序列——過長編碼、孤立的接續位元組、單獨使用的代理半段、落在 Unicode 範圍外的碼點——不會被替換為 U+FFFD。相反地,嚴格的 UTF-8 解碼器會擲出明確的錯誤,讓您能定位並修正問題。正是這種嚴格的驗證,使得往返轉換在檢查精確的 UTF-8 字串時值得信賴,而非「看起來大致正確」的近似值。以相同淺顯易懂風格說明的反向操作,記載於 二進位轉文字轉換指南 中。

限制、錯誤以及二進位文字無法做到的事

兩項數值預算限制了轉換器,且在輸入變大時變得重要。編碼接受最多 20,000 個 UTF-16 碼單位的字串;解碼接受最多 180,000 個字元的序列化輸入(位數加分隔符)。超過這些預算的輸入會在任何轉換嘗試之前被拒絕,以避免工具悄悄截斷或臆測。

方向最大輸入嚴格要求
將文字編碼為 UTF-8 二進位20,000 個 UTF-16 碼單位任何 Unicode 字串;位元組數隨碼點而異
將 UTF-8 二進位解碼為文字序列化輸入最多 180,000 個字元群組恰好八個二進位數字、一個 ASCII 空格、無周圍空白

二進位輸出也無法取代若干相鄰的任務。轉換器不會將二進位解讀為整數的二進位表示、不會解析摩斯密碼、不會對位元組執行機器指令,也不會辨識十六進位或 Base64 格式。它也不是加密:任何讀取輸出的人都能還原原始文字,因為二進位是相同資訊的可逆表示。產品文件明確警告,二進位不提供機密性、認證、完整性或壓縮。若需要保密,請使用帶有金鑰的真正加密演算法;若真正目標是十六進位、碼點或經認證的加密,專門的編碼工具會以各自的格式規則處理每種情況。

複製輸出後的處理方式

二進位輸出是帶有普通空格的純文字,因此在某些無法精確保留空白的地方會變得脆弱。聊天應用程式特別常會合併連續空格、將其視為軟換行,或在您貼上時插入零寬字元。一旦發生這種情況,嚴格的解碼器將無法解析群組,儘管底層位元組未變,往返轉換仍會失敗。透過電子郵件、Markdown 文件中的圍欄程式碼區塊、GitHub gist 或純文字 .txt 附件傳送結果通常安全;直接貼入所見即所得編輯器或聊天視窗則不安全。

在處理通訊協定、原始碼審查或鑑識工作時,負責任的習慣是根據目的地系統的規格驗證實際的位元組序列,而非依賴字型或預覽在螢幕上呈現數字的方式。文字轉二進位轉換器僅顯示位元組;下一個程式是否能正確讀回這些位元組,係由該程式及其間的傳輸方式決定,而非由轉換器本身決定。

延伸閱讀:線上使用文字轉十六進位是否安全?隱私指南