文字與二進位互轉

把文字逐位元組翻譯成由 0 和 1 組成的二進位程式碼,每個位元組 8 位;也可以把二進位還原為可讀文字。支援 UTF-8 及多種其他字元集。

完全在瀏覽器中執行,不會上傳任何資料。

使用方法

  1. 選擇「編碼」把文字轉換為二進位,或選擇「解碼」把二進位還原為文字。
  2. 輸入或貼上文字或二進位數字,也可以開啟檔案,結果會隨輸入即時更新。
  3. 為 8 位分組選擇分隔符:空格、無、逗號或換行。
  4. 如果文字不是 UTF-8,請切換「文字編碼」,然後複製或下載結果。

文字是如何變成二進位的

計算機以位元組形式儲存文字。UTF-8 等文字編碼會把每個字元對映為一個或多個位元組,而每個位元組都是 0 到 255 之間的數字,用二進位表示最多需要 8 位。本工具把每個位元組固定寫成 8 位並保留前導零,這樣每組寬度相同,解碼時不必猜測位元組之間的邊界。

在 UTF-8 中,英文字母、數字和標點各佔 1 個位元組,每個字元對應一組 8 位;其他字元則更長:é 等帶重音的字母佔 2 個位元組,大多數漢字和日文字元佔 3 個位元組,emoji 佔 4 個位元組,也就是 32 位。如果希望每個漢字只佔 2 個位元組,可以在「文字編碼」中選擇 GBK;西歐文字可以選擇 ISO-8859-1 或 Windows-1252,每個字元只佔 1 個位元組。

把二進位翻譯迴文字

在「解碼」模式下,可以貼上用空格、逗號或換行分隔的二進位分組。分隔開的分組可以省略前導零,因此按 7 位輸出 ASCII 的工具生成的結果也能識別。沒有分隔符的連續 0 和 1 會按每 8 位切分,所以總長度必須是 8 的倍數。其他字元或大於 11111111(255)的分組會連同位置一起報錯。

得到的位元組會按所選的文字編碼解讀。請選擇生成二進位時使用的編碼,或把輸出切換為「十六進位」檢視原始位元組。

在程式碼中把文字轉換為二進位

# Python
' '.join(f'{b:08b}' for b in 'Hi'.encode())      # '01001000 01101001'
bytes(int(g, 2) for g in '01001000 01101001'.split()).decode()   # 'Hi'

// JavaScript
[...new TextEncoder().encode('Hi')]
  .map(b => b.toString(2).padStart(8, '0')).join(' ')   // '01001000 01101001'

編碼規格

字母表0 1
輸出體積每位元組 8 位數字(800%)
填充無
標準二進位位值表示
區分大小寫否

編碼範例

輸入 (UTF-8)輸出
Hello, World!01001000 01100101 01101100 01101100 01101111 00101100 00100000 01010111 01101111 01110010 01101100 01100100 00100001
Base64.is01000010 01100001 01110011 01100101 00110110 00110100 00101110 01101001 01110011
你好11100100 10111101 10100000 11100101 10100101 10111101

常見問題

一個字元是多少位?

ASCII 字元以及 UTF-8 中的英文字母都是 1 個位元組,即 8 位。UTF-8 中的其他字元佔 16、24 或 32 位,常用漢字一般是 24 位。UTF-16 中每個字元至少佔 16 位。

沒有空格的二進位可以轉換成文字嗎?

可以,只要它是由完整的 8 位分組連在一起組成的。如果分組省略了前導零、不足 8 位,請用空格或逗號把它們隔開,這樣解碼器才能知道每個位元組在哪裡結束。

文字轉二進位和數字轉二進位一樣嗎?
不一樣。本工具是把文字的每個位元組分別轉換。如果要把單個數字(例如 1000)轉換為二進位,請使用進位轉換器。
我的文字會被上傳嗎?

不會。轉換完全在瀏覽器中進行,你輸入的文字和開啟的檔案都不會離開你的裝置。