Hexspeak16进制魔术数字)是一种类似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)标头。[1]
  • 0x8BADF00D(“ate bad food”)为iOS应用程序崩溃报告中的超时英语Timeout (computing)标识符,一般在程序运行、终止与响应时停滞太久时出现。[2]
  • 0xBAADF00D(“bad food”)在微软的LocalAlloc(LMEM_FIXED)函数中使用,用以在已启用调试堆的情况下,标识未初始化的分配堆内存。[3]
  • 0xCAFED00D(“Cafe Dude”)在Java中用于识别Pack200压缩格式。[5]
  • 0xDEADDEAD(“dead dead”)是蓝屏时显示的错误代码[10] 。由于此代码在基于Windows NT的系统上用于进行内存转储,因而常为驱动开发者所见。0xDEADDEAD还有一个变种──0x000000E2[11],这两者在微软开发者网络中都被称为MANUALLY_INITIATED_CRASH。
  • 0xDEADFA11(“dead fall”)为iOS应用程序崩溃报告中的“强制终止应用程序”的标识符。[2]
  • 0xE011CFD0在微软Office文件中使用,小端序下表示为D0CF11E0,也即“docfile0”。[13]
  • 0xFACEFEED(“face feed”)在运行Windows NT的Alpha服务器上使用,也即当出现硬件错误时,Alpha的硬件抽象层就会产生这一错误信号。[14]
  • 0xFEE1DEAD(“feel dead”)是Linux重启系统调用中使用的魔术数。[15]
  • 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)。

参见

注释

  1. ^ Multiboot specifications. [2011-09-04]. (原始内容存档于2012-07-02). 
  2. ^ 2.0 2.1 Technical Note TN2151: Understanding and Analyzing iPhone OS Application Crash Reports. [2011-09-04]. (原始内容存档于2012-07-02). 
  3. ^ Win32 Debug CRT Heap Internals. [2011-09-04]. (原始内容存档于2012-07-02). 
  4. ^ Why Cafebabe. Artima.com. [2009-10-01]. (原始内容存档于2012-07-02). 
  5. ^ Pack200: A Packed Class Deployment Format For Java Applications. [2010-11-03]. 
  6. ^ Yet Another Gamecube Documentation: Dolphin-OS Globals. [2011-09-05]. (原始内容存档于2012-07-02). 
  7. ^ Wiibrew: Memory Map. [2011-09-05]. (原始内容存档于2012-07-02). 
  8. ^ DEADBABE sanity check. [2009-10-01]. (原始内容存档于2012-07-02). 
  9. ^ Jargon File entry for DEADBEEF. Catb.org. [2009-10-01]. (原始内容存档于2012-07-02). 
  10. ^ Bug Check 0xDEADDEAD: MANUALLY_INITIATED_CRASH, MSDN. msdn.microsoft.com. 2009-10-01 [2009-10-13]. (原始内容存档于2009-10-02). 
  11. ^ Bug Check 0xE2: MANUALLY_INITIATED_CRASH, MSDN. msdn.microsoft.com. 2009-10-01 [2009-10-13]. (原始内容存档于2009-07-31). 
  12. ^ Opensolaris header line 45 for 0xDEFEC8ED. src.opensolaris.org. [2011-07-12]. (原始内容存档于2011-09-29). 
  13. ^ Documents That Are Supported by the Office Filter. [2011-09-04]. (原始内容存档于2012-07-02). 
  14. ^ Technet article for 0xFACEFEED. Support.microsoft.com. 2006-11-01 [2009-10-01]. (原始内容存档于2012-07-02). 
  15. ^ include/linux/reboot.h. (原始内容存档于2012-07-02).