<p><b>Hexspeak</b>（16進位魔術數字）是一種類似Leet的英文單詞轉寫形式。
</p>


<h2><span id=".E8.B5.B7.E6.BA.90.E5.92.8C.E5.86.99.E6.B3.95"></span><span id="起源和写法">起源和寫法</span></h2>
<p>Hexspeak最早是程式設計師用來清晰獨特地標記記憶體和資料的一些魔術數字，使用以0-9與A-F構成的16進位數表示一些簡單的英文單詞。Hexspeak的轉寫規則為：數字「0」表示字母「O」，「1」表示「I」或「L」，「5」表示「S」，「7」表示「T」，「6」、「9」則各自表示「G」與「g」，其它的數字則可利用畫謎和Leet的規則來借代字母，例如「defecate」就可用「DEFECA7E」或「DEFEC8」來表示。
</p>
<h2><span id=".E8.BE.83.E6.9C.89.E5.90.8D.E7.9A.84.E9.AD.94.E6.9C.AF.E6.95.B0"></span><span id="较有名的魔术数">較有名的魔術數</span></h2>

<p>16進位魔術數在許多處理器、作業系統和除錯工具中都得到應用，且尤常作為測試參數使用。
</p>
<ul><li>0x0000000FF1CE是微軟Office組件產品代碼的最後一部分，可於註冊表的HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall的鍵值中尋得。</li></ul><ul><li>0x00BAB10C（oo-ba-block）在ZFS的uberblock里使用。</li></ul><ul><li>0x1BADB002（「I bad boot」）為多重引導(Multiboot Specification)標頭。</li></ul><ul><li>0x8BADF00D（「ate bad food」）為iOS應用程式崩潰報告中的<span data-orig-title="超时 (计算机)" data-lang-code="en" data-lang-name="英語" data-foreign-title="Timeout (computing)"><span>超時</span></span>標識符，一般在程序運行、終止與響應時停滯太久時出現。</li></ul><ul><li>0xBAADF00D（「bad food」）在微軟的LocalAlloc（LMEM_FIXED）函數中使用，用以在已啟用調試堆的情況下，標識未初始化的分配堆記憶體。</li></ul><ul><li>0xCAFEBABE（「cafe babe」）在Mach-O格式文件中用於標識通用二進位目標文件，同時也在Java中用於識別Java字節碼類文件。</li></ul><ul><li>0xCAFED00D（「Cafe Dude」）在Java中用於識別Pack200壓縮格式。</li></ul><ul><li>0xD15EA5E（「disease」）是任天堂GameCube與Wii控制台正常啟動的標識符。</li></ul><ul><li>0xDEADBABE（「Dead Babe」）在IBM的Jikes研究虛擬機上使用，用於確認主執行緒的棧是否正常。</li></ul><ul><li>0xDEADBEEF（「dead beef」）在嵌入式系統中常用於標示軟體崩潰或是死結，在IBM RS/6000系統、32位PowerPC處理器上的Mac OS系統以及Commodore International的Amiga電腦上都有使用；而在Sun的Solaris作業系統中，這一魔術數則用於標記已釋放的記憶體儲存空間。另外，在Alpha處理器上的OpenVMS作業系統中，按下CTRL+T就可以看到DEAD_BEEF。DEC Alpha的<span data-orig-title="存储资源管理" data-lang-code="en" data-lang-name="英語" data-foreign-title="Storage Resource Management"><span>存儲資源管理</span></span>控制台亦有一個用於檢測記憶體錯誤的後台進程，PS識別為「BeefEater waiting on 0xdeadbeef」。</li></ul><ul><li>0xDEADDEAD（「dead dead」）是藍白當機畫面時顯示的錯誤代碼 。由於此代碼在基於Windows NT的系統上用於進行核心文件，因而常為驅動開發者所見。0xDEADDEAD還有一個變種──0x000000E2，這兩者在微軟開發者網絡中都被稱為MANUALLY_INITIATED_CRASH。</li></ul><ul><li>0xDEADFA11（「dead fall」）為iOS應用程式崩潰報告中的「強制終止應用程式」的標識符。</li></ul><ul><li>0xDEFEC8ED（「defecated」）在OpenSolaris的核心文件中使用。</li></ul><ul><li>0xE011CFD0在微軟Office文件中使用，小端序下表示為D0CF11E0，也即「docfile0」。</li></ul><ul><li>0xFACEFEED（「face feed」）在運行Windows NT的Alpha伺服器上使用，也即當出現硬體錯誤時，Alpha的硬體抽象層就會產生這一錯誤信號。</li></ul><ul><li>0xFEE1DEAD（「feel dead」）是Linux重啟系統呼叫中使用的魔術數。</li></ul><ul><li>C15C:0D06:F00D（cisco dog food）於世界IPv6日在www.cisco.com的IPv6地址中使用。「Dog food」指的就是就是Cisco在IPv6上「eating its own dog food」（也即用自家的設備）的做法。</li></ul><h2><span id=".E4.B8.8D.E5.90.8C.E6.83.85.E5.86.B5.E4.B8.8B.E7.9A.84.E5.8C.BA.E5.88.AB"></span><span id="不同情况下的区别">不同情況下的區別</span></h2>
<ul><li>在Ada語言中，16進位數帶有「16#」的前綴與「#」的後綴，例如「16#Ada_Ada_Ada_Ada#」。</li></ul><ul><li>在C語言中，16進位數用「0x」前綴標識。</li></ul><ul><li>在Intel格式的彙編語言中，16進位數用「h」後綴標識，且當開頭數字為A-F時必須加「0」為前綴，例如0FEEDADEADF15h（FEED A DEAD FISH）。</li></ul><ul><li>在Pascal語言和MOS 6502使用的彙編語言中，16進位數用「$」前綴標識，也即以S開頭的詞語也可以用16進位數表示，比如$EED（即SEED）。</li></ul><ul><li>在<span data-orig-title="Elektronika B3-34" data-lang-code="en" data-lang-name="英語" data-foreign-title="Elektronika B3-34"><span>Elektronika B3-34</span></span>型<span data-orig-title="可编程计算器" data-lang-code="en" data-lang-name="英語" data-foreign-title="Programmable calculator"><span>可程式計算器</span></span>上16進位數是用俄語字母而非拉丁字母表示的，也即「−」、「L」、「C」、「Г」、「E」與空格，以此便可表示如「EГГ0Г」（即ERROR）這樣的信息。</li></ul><h2><span id=".E5.8F.82.E8.A7.81"></span><span id="参见">參見</span></h2>
<ul><li>Leet</li>
<li>魔術數字</li></ul><h2><span id=".E6.B3.A8.E9.87.8A"></span><span id="注释">注釋</span></h2>
<!-- 
NewPP limit report
Parsed by mw2372
Cached time: 20230505230526
Cache expiry: 1814400
Reduced expiry: false
Complications: [show‐toc]
CPU time usage: 0.156 seconds
Real time usage: 0.202 seconds
Preprocessor visited node count: 758/1000000
Post‐expand include size: 26489/2097152 bytes
Template argument size: 225/2097152 bytes
Highest expansion depth: 5/100
Expensive parser function count: 4/500
Unstrip recursion depth: 0/20
Unstrip post‐expand size: 16559/5000000 bytes
Lua time usage: 0.074/10.000 seconds
Lua memory usage: 4227321/52428800 bytes
Number of Wikibase entities loaded: 0/400
--><!--
Transclusion expansion time report (%,ms,calls,template)
100.00%  143.601      1 -total
 56.05%   80.487     15 Template:Cite_web
 16.70%   23.975      1 Template:Further
 16.49%   23.673      4 Template:Tsl
-->
**Hexspeak**（16 進位魔術數字）是一種類似 Leet 的英文單詞轉寫形式。

## 起源和寫法

Hexspeak 最早是程式設計師用來清晰獨特地標記記憶體和資料的一些魔術數字，使用以 0-9 與 A-F 構成的 16 進位數表示一些簡單的英文單詞。Hexspeak 的轉寫規則為：數字「0」表示字母「O」，「1」表示「I」或「L」，「5」表示「S」，「7」表示「T」，「6」、「9」則各自表示「G」與「g」，其它的數字則可利用畫謎和 Leet 的規則來借代字母，例如「defecate」就可用「DEFECA7E」或「DEFEC8」來表示。

## 較有名的魔術數

16 進位魔術數在許多處理器、作業系統和除錯工具中都得到應用，且尤常作為測試參數使用。

* 0x0000000FF1CE 是微軟 Office 組件產品代碼的最後一部分，可於註冊表的 HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall 的鍵值中尋得。
* 0x00BAB10C（oo-ba-block）在 ZFS 的 uberblock 里使用。
* 0x1BADB002（「I bad boot」）為多重引導 (Multiboot Specification) 標頭。
* 0x8BADF00D（「ate bad food」）為 iOS 應用程式崩潰報告中的超時標識符，一般在程序運行、終止與響應時停滯太久時出現。
* 0xBAADF00D（「bad food」）在微軟的 LocalAlloc（LMEM\_FIXED）函數中使用，用以在已啟用調試堆的情況下，標識未初始化的分配堆記憶體。
* 0xCAFEBABE（「cafe babe」）在 Mach-O 格式文件中用於標識通用二進位目標文件，同時也在 Java 中用於識別 Java 字節碼類文件。
* 0xCAFED00D（「Cafe Dude」）在 Java 中用於識別 Pack200 壓縮格式。
* 0xD15EA5E（「disease」）是任天堂 GameCube 與 Wii 控制台正常啟動的標識符。
* 0xDEADBABE（「Dead Babe」）在 IBM 的 Jikes 研究虛擬機上使用，用於確認主執行緒的棧是否正常。
* 0xDEADBEEF（「dead beef」）在嵌入式系統中常用於標示軟體崩潰或是死結，在 IBM RS/6000 系統、32 位 PowerPC 處理器上的 Mac OS 系統以及 Commodore International 的 Amiga 電腦上都有使用；而在 Sun 的 Solaris 作業系統中，這一魔術數則用於標記已釋放的記憶體儲存空間。另外，在 Alpha 處理器上的 OpenVMS 作業系統中，按下 CTRL+T 就可以看到 DEAD\_BEEF。DEC Alpha 的存儲資源管理控制台亦有一個用於檢測記憶體錯誤的後台進程，PS 識別為「BeefEater waiting on 0xdeadbeef」。
* 0xDEADDEAD（「dead dead」）是藍白當機畫面時顯示的錯誤代碼 。由於此代碼在基於 Windows NT 的系統上用於進行核心文件，因而常為驅動開發者所見。0xDEADDEAD 還有一個變種──0x000000E2，這兩者在微軟開發者網絡中都被稱為 MANUALLY\_INITIATED\_CRASH。
* 0xDEADFA11（「dead fall」）為 iOS 應用程式崩潰報告中的「強制終止應用程式」的標識符。
* 0xDEFEC8ED（「defecated」）在 OpenSolaris 的核心文件中使用。
* 0xE011CFD0 在微軟 Office 文件中使用，小端序下表示為 D0CF11E0，也即「docfile0」。
* 0xFACEFEED（「face feed」）在運行 Windows NT 的 Alpha 伺服器上使用，也即當出現硬體錯誤時，Alpha 的硬體抽象層就會產生這一錯誤信號。
* 0xFEE1DEAD（「feel dead」）是 Linux 重啟系統呼叫中使用的魔術數。
* C15C:0D06:F00D（cisco dog food）於世界 IPv6 日在 www.cisco.com 的 IPv6 地址中使用。「Dog food」指的就是就是 Cisco 在 IPv6 上「eating its own dog food」（也即用自家的設備）的做法。

## 不同情況下的區別

* 在 Ada 語言中，16 進位數帶有「16#」的前綴與「#」的後綴，例如「16#Ada\_Ada\_Ada\_Ada#」。
* 在 C 語言中，16 進位數用「0x」前綴標識。
* 在 Intel 格式的彙編語言中，16 進位數用「h」後綴標識，且當開頭數字為 A-F 時必須加「0」為前綴，例如 0FEEDADEADF15h（FEED A DEAD FISH）。
* 在 Pascal 語言和 MOS 6502 使用的彙編語言中，16 進位數用「$」前綴標識，也即以 S 開頭的詞語也可以用 16 進位數表示，比如 $EED（即 SEED）。
* 在 Elektronika B3-34 型可程式計算器上 16 進位數是用俄語字母而非拉丁字母表示的，也即「−」、「L」、「C」、「Г」、「E」與空格，以此便可表示如「EГГ0Г」（即 ERROR）這樣的信息。

## 參見

* Leet
* 魔術數字

## 注釋
16进制魔术数