在 iPhone 上將文字轉成十六進位,是指將任何文字(包括表情符號、帶有腔調的字元,以及 iOS 鍵盤輸入的 CJK 字元)編碼為其底層的 UTF-8 位元組序列,並以成對的十六進位數字表示,整個過程都在 Safari 中完成,無需安裝任何 App。轉換過程使用瀏覽器的 TextEncoder API,因此像 A 這樣的單一 ASCII 字元會變成兩位數的位元組 41,而像 😀 這樣的單一表情符號則會變成四個位元組 f0 9f 98 80。由於轉換是在 Safari 分頁中本機執行,因此沒有任何文字或十六進位資料會離開裝置,輸出結果可以直接複製到 iOS 剪貼簿,再貼上到程式碼編輯器、聊天視窗或備忘錄 App 中。當您需要在手機上快速取得十六進位輸出時,這是最快的途徑——不需要跑一趟 App Store,除了剪貼簿存取權限外不會跳出任何授權對話框,也無需等待下載。您在 iPhone 上看到的十六進位結果,與同事在 Mac 或 Windows 機器上看到的完全一致,因為兩者都依賴 WHATWG 的 UTF-8 編碼器。

text to hex on iphone
在 iPhone 上將文字轉成十六進位:無需 App,直接在 Safari 中轉換

為什麼要在 iPhone 上使用瀏覽器工具來進行文字轉十六進位

iOS App Store 中幾乎找不到專門的文字轉十六進位工具,而現有的少數工具往往需要付費、含有廣告,或在輸入量上限上有所限制。Safari 已經預先安裝在每一部 iPhone 上,因此使用瀏覽器工具可以徹底省去安裝步驟,把儲存空間留給真正需要下載的照片和 App。基於瀏覽器的工具也能讓 iPhone 使用者存取與桌面瀏覽器完全相同的 TextEncoder 邏輯,因此您在手機上看到的位元組與同事在 Mac 或 Windows 機器上取得的位元組是一致的。當您在除錯承載資料、在聊天中分享十六進位字串,或驗證編碼後的位元組序列是否正確時,跨裝置的一致性就至關重要。這個工具不需要任何帳號或登入,您可以將頁面加入書簽,在需要時隨時重新開啟。

如何在 iPhone 上的 Safari 中將文字轉成十六進位

請依照下列步驟在 iPhone 上操作,無需離開 Safari 即可取得乾淨的 UTF-8 十六進位結果。

  1. 開啟 Safari 並前往 Text to HEX 頁面。
  2. 點選輸入欄位,然後輸入或貼上您想要編碼的文字。使用地球鍵可以切換鍵盤以輸入帶有腔調的字元,或使用笑臉鍵從 iOS 表情符號選擇器直接插入表情符號。
  3. 選擇輸出格式:連續成對的格式(如 4869)、以空格分隔位元組的格式(如 48 69),或每個位元組加上前綴的格式(如 0x48 0x69)。
  4. 選擇小寫或大寫的十六進位數字。大寫模式只會改變 a 到 f 之間的字母,位元組的值維持不變。
  5. 點選「Encode」(編碼)。結果面板會顯示完整的十六進位輸出、UTF-8 位元組計數、格式化後的輸出長度,以及任何孤立代理項的替換警告。
  6. 點選「Copy」(複製)將完整輸出放入 iOS 剪貼簿。然後您可以將其貼到裝置上的備忘錄、郵件、訊息或任何程式碼編輯器中。

如果 Safari 拒絕剪貼簿存取權限,完整結果仍會保留在唯讀面板中,您可以長按以手動選取並複製。

UTF-8 十六進位輸出實際代表的意義

您輸入的每個字元會對應到一個、兩個、三個或四個 UTF-8 位元組,而每個位元組一律以剛好兩位十六進位數字表示。這種對應關係由 WHATWG 編碼標準所固定,Safari 的 TextEncoder 正是實作了此標準,而瀏覽器 API 的相關說明則另外記錄在 MDN TextEncoder 參考文件 中。

Unicode 範圍UTF-8 位元組十六進位數字範例字碼點範例十六進位
U+0000 – U+007F12U+0041 (A)41
U+0080 – U+07FF24U+00E9 (é)c3a9
U+0800 – U+FFFF36U+4F60 (你)e4bda0
U+10000 – U+10FFFF48U+1F600 (😀)f09f9880

這四列中有兩列在 iPhone 上極為常見:é 是透過長按帶有腔調字的選擇器來輸入,而 😀 只需輕點笑臉鍵即可取得。兩者都會產生可預期的多位元組十六進位序列,這使得它們成為檢查工具是否正常運作時相當實用的測試輸入。

三種輸出格式及其長度規則

同一個 UTF-8 位元組陣列可以三種方式呈現。連續格式寫出的十六進位成對數字之間沒有分隔符,因此「Hi」會變成 4869。空格分隔格式會在每對位元組之間插入一個 ASCII 空格,因此「Hi」會變成 48 69。前綴格式會將每個位元組寫成 0xNN,且各代碼之間以一個 ASCII 空格分隔,因此「Hi」會變成 0x48 0x69。更改格式或大小寫絕不會改變編碼後的位元組,只有格式化後的輸出長度會改變。

格式「Hi」的範例(位元組 48 69)長度公式「Hi」的長度
連續48692n4
以空格分隔48 693n − 15
加上 0x 前綴0x48 0x695n − 19

用算式驗證:2 × 2 = 4、3 × 2 − 1 = 5,以及 5 × 2 − 1 = 9。這三個數字與範例完全相符,也正是工具在格式化長度計數器中所回報的值。您可以利用這個相同的關係,在按下「編碼」之前預測較長的輸入是否符合輸出預算。例如,一百萬個 ASCII 字元以 0x 前綴格式編碼時,會產生剛好 5 × 1,000,000 − 1 = 4,999,999 個輸出碼元,這正是工具所能接受的最大輸出邊界。

iOS 上的限制、代理項與邊緣情況

此工具強制執行兩項明確的預算上限。輸入欄位最多接受 1,000,000 個 UTF-16 碼元,這大約相當於一百萬個 ASCII 字元,或大約 250,000 個四位元組的表情符號。格式化後的輸出最多可容納 4,999,999 個 UTF-16 碼元。這個邊界是精確的:以 0x 前綴格式編碼一百萬個 ASCII 字元會產生剛好 4,999,999 個輸出碼元,這是所能接受的最大值。只要超出任一上限一個碼元,工具就會以明確的訊息加以拒絕,而不會默默地截斷、取樣、切換格式或刪除結尾。如果您從備忘錄文件中貼上更大的內容,工具會回報錯誤而不是自行猜測。

iPhone 上的 JavaScript 字串採用 UTF-16 編碼,這通常不會被察覺,但在兩種情況下會產生影響。第一,正確配對的高位元加低位元代理項配對(例如 😀)會正常編碼成四個 UTF-8 位元組。第二,孤立的高位元或低位元代理項並非有效的字元,因此標準的 TextEncoder 轉換會將其各自取代為 U+FFFD,其 UTF-8 位元組為 EF BF BD。結果面板會計算這類取代次數並顯示明顯的警告,因為將位元組解碼回來後無法重建原本的孤立碼元。

此工具不會加入 UTF-8 BOM。如果您的輸入本身以 U+FEFF 開頭,則該三個位元組(EF BB BF)會作為一般資料出現在輸出的開頭。對應的 Hex to Text 轉換器會依其文件中說明的 TextDecoder 政策消耗掉開頭的 BOM,因此若要透過該特定工具進行精確的雙向轉換,也要求原始文字不能以 U+FEFF 開頭。

此工具不會套用 Unicode 正規化、換行字元轉換、修剪、大小寫摺疊、跳脫字元解析或區域設定相關的改寫。NUL(U+0000)會變成位元組 00。組合序列會保持分解狀態,除非輸入本身已經是預先組合的;例如,e 後面接著 U+0301 會變成 65 CC 81,而不會被改為 U+00E9。

iPhone 上快速取得十六進位輸出的常見情境

在手機上常會遇到三種情況。第一,您可能需要將十六進位字串貼到聊天中,以便與正在其他平台上除錯的開發人員分享權杖、色彩代碼或魔術數字(magic bytes)。第二,您可能想確認 Safari 所看到的位元組與桌面工具所看到的一致,特別是在處理表情符號或非 ASCII 文字時,編碼上的意外很常發生。第三,您可能正在將簡短的識別碼編碼進設定檔或 URL 片段中,並希望直接從 Safari 複製結果,而無需透過外部服務繞一圈。

在這三種情況下,操作流程都相同:輸入或貼上、選擇格式、編碼、然後複製。結果是在您的 Safari 分頁中本機產生的,iOS 剪貼簿只會收到最終的十六進位字串,您可以將其貼到任何需要的地方,而無需擔心伺服器會保留一份副本。如果想進一步了解 UTF-8 位元組如何在更多輸入下轉變為十六進位成對數字,Text to Hex 範例演練 展示了將相同轉換套用於更廣泛字元的情形。