Hex 解碼

在下方貼上十六進位字串並點擊解碼將其轉換為文字。所有處理均在瀏覽器中本地完成。

空格、冒號、逗號、連字號和 0x 前綴在解碼前都會被去掉。
已複製!

什麼是十六進位解碼?

十六進位解碼將十六進位字串轉換回其原始位元組表示,然後轉為文字。輸入可以包含空格、冒號或十六進位配對之間無分隔符。

每對十六進位字元(00ff)代表一個位元組。解碼後的位元組被解讀為 UTF-8 文字。

空格、冒號、逗號、分號、句點和連字號會在解碼前被去掉,所以直接從指紋或 dump 裡複製來的十六進位通常不必清理就能用。隨後這些位元組按 UTF-8 讀取,不是有效 UTF-8 的會被報出來,而不是變成亂碼。

正在排查一個死活解不開的問題?

解不開的資料包通常是症狀而不是病根:鏈路上某處做了兩次編碼、字元集是被假定而不是被宣告、權杖簽章所涵蓋的位元組和大家以為的並不完全一致。這類活我們在做,圍繞整合、API 以及在它們之間傳遞資料的系統。

說說哪裡出了問題

常見問題

我的十六進位字串為什麼解不開?
通常是位數為奇數,或者混進了非十六進位的字元。每個位元組需要正好兩位,所以位數為奇數說明有內容被截斷,或者中途丟了一位。混進來的字元常常是把 1 打成了小寫 l、把 0 打成了大寫 O,或者複製那一行時把行尾也帶了進來。
可以貼上帶空格、冒號或 0x 前綴的十六進位嗎?
空格、冒號、逗號、分號、句點和連字號在解碼前都會被去掉,所以直接從憑證指紋、MAC 位址或 dump 裡複製來的十六進位通常不必清理就能用。每個位元組前的 0x 不會被去掉,如果你的來源帶有它們,請先刪掉。
如果解出來的位元組不是文字怎麼辦?
這是正常情況,不是出錯。十六進位只是把位元組寫下來的方式,而這些位元組經常根本不是文字。本頁按 UTF-8 解碼,遇到不是有效 UTF-8 的情況會直說,而不是印出一堆替換字元讓你自己琢磨。如果你本以為是文字卻沒拿到,可以查一下這些位元組是不是被壓縮或加密過。
怎麼知道這些位元組用的是哪種字元編碼?
光看十六進位是不知道的。十六進位字串本身不會記錄它是由哪種編碼產生的,那個資訊存在於位元組之外,在 HTTP 標頭、檔案格式或協定規範裡。本頁面假定是 UTF-8,絕大多數情況下這個假定是對的;也正因如此,遇到非法序列時它會報成二進位資料,而不是悄悄變成一串亂碼。若你已知這些位元組屬於別的編碼,請用一個能指定編碼的工具來解碼。
十六進位解碼是可逆的嗎?
完全可逆。十六進位只是直接替換,每個位元組兩個字元,不丟也不添,所以編碼再解碼會原樣得回最初的位元組。不一定可逆的是它之後那一步:把位元組還原成文字需要正確的編碼,而在該編碼下非法的位元組序列壓根就沒有文字形態。