使用方法
- 選擇「編碼」把文字轉換為二進位,或選擇「解碼」把二進位還原為文字。
- 輸入或貼上文字或二進位數字,也可以開啟檔案,結果會隨輸入即時更新。
- 為 8 位分組選擇分隔符:空格、無、逗號或換行。
- 如果文字不是 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.is | 01000010 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 位,請用空格或逗號把它們隔開,這樣解碼器才能知道每個位元組在哪裡結束。
文字轉二進位和數字轉二進位一樣嗎?
我的文字會被上傳嗎?
不會。轉換完全在瀏覽器中進行,你輸入的文字和開啟的檔案都不會離開你的裝置。