Hex 編碼
在下方貼上文字並點擊編碼將其轉換為十六進位字串。所有處理均在瀏覽器中本地完成。
已複製!
什麼是十六進位編碼?
十六進位編碼將每個位元組的資料轉換為兩個字元的十六進位字串(00–ff)。這對於檢查二進位資料、除錯網路協定以及在程式碼中表示位元組陣列非常有用。
使用超過一個位元組的 UTF-8 字元將產生多個十六進位配對。
分隔符和大小寫由你決定:位元組之間不加東西可得到緊湊的字串,加空格更好讀,用冒號則是指紋和 MAC 位址常見的寫法。一切都在你的瀏覽器中完成。
正在排查一個死活解不開的問題?
解不開的資料包通常是症狀而不是病根:鏈路上某處做了兩次編碼、字元集是被假定而不是被宣告、權杖簽章所涵蓋的位元組和大家以為的並不完全一致。這類活我們在做,圍繞整合、API 以及在它們之間傳遞資料的系統。
說說哪裡出了問題常見問題
十六進位編碼用來做什麼?
當需要由人來讀這些位元組時,用的就是十六進位。雜湊、校驗和、金鑰、顏色值、MAC 位址、記憶體傾印和封包擷取結果都以十六進位呈現,因為每個位元組正好變成兩個字元,位置能按欄對齊,錯了一個位元組一眼就能看出來。它也是把二進位資料貼進原始碼的常規做法。
十六進位編碼和 Base64 有什麼不同?
十六進位更占地方,但更好讀。每個位元組變成兩個字元,所以輸出正好是輸入的兩倍,而 Base64 只多出約三分之一。作為回報,十六進位的對應關係固定而直白:指著一對字元就知道它是哪個位元組,偏移量能用眼睛數,改動一個位元組也不會牽動旁邊。看重體積時 Base64 更划算,需要人來看時十六進位更好。
為什麼一個字元有時會變成好幾對十六進位?
因為十六進位編碼的是位元組而不是字元,而文字要經過 UTF-8 才變成位元組。落在 ASCII 範圍內的都是一個位元組,也就是一對。帶重音的拉丁字母、希臘字母和西里爾字母占兩個位元組,多數中日韓漢字占三個,表情符號占四個。所以五個字元的字串變成二十對十六進位毫不稀奇。
該選哪種分隔符?
取決於這段輸出要送到哪裡。位元組之間什麼都不加,是程式碼和多數 API 所期待的形式,也是最短的。加空格讓長字串更好讀,也是 dump 裡常見的樣子。冒號則是憑證指紋和 MAC 位址的慣例。三種寫法的位元組完全相同,變的只是中間的標點。
十六進位編碼等於雜湊嗎?
不等於,儘管兩者常常一起出現。雜湊是單向函式:它把任意輸入壓成固定長度的摘要,且無法還原成原文。十六進位則是把位元組寫下來的可逆方式。雜湊值通常用十六進位顯示,所以兩者看起來很像,但把密碼做成十六進位不會帶來任何保護,只是得到同一個密碼的更長版本。