Hexspeak
(重定向自16进制魔术数)
起源和写法
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]
- 0xD15EA5E(“disease”)是任天堂GameCube与Wii控制台正常启动的标识符。[6][7]
- 0xDEADBABE(“Dead Babe”)在IBM的Jikes研究虚拟机上使用,用于确认主线程的栈是否正常。[8]
- 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”[9]。
- 0xDEADDEAD(“dead dead”)是蓝屏时显示的错误代码[10] 。由于此代码在基于Windows NT的系统上用于进行内存转储,因而常为驱动开发者所见。0xDEADDEAD还有一个变种──0x000000E2[11],这两者在微软开发者网络中都被称为MANUALLY_INITIATED_CRASH。
- 0xDEFEC8ED(“defecated”)在OpenSolaris的核心文件中使用。[12]
- C15C:0D06:F00D(cisco dog food)于世界IPv6日在www.cisco.com的IPv6地址中使用。“Dog food”指的就是就是Cisco在IPv6上“eating its own dog food”(也即用自家的设备)的做法。
不同情况下的区别
- 在C语言中,16进制数用“0x”前缀标识。
- 在Elektronika B3-34型可编程计算器上16进制数是用俄语字母而非拉丁字母表示的,也即“−”、“L”、“C”、“Г”、“E”与空格,以此便可表示如“EГГ0Г”(即ERROR)这样的信息。
参见
注释
- ^ Multiboot specifications. [2011-09-04]. (原始内容存档于2012-07-02).
- ^ 2.0 2.1 Technical Note TN2151: Understanding and Analyzing iPhone OS Application Crash Reports. [2011-09-04]. (原始内容存档于2012-07-02).
- ^ Win32 Debug CRT Heap Internals. [2011-09-04]. (原始内容存档于2012-07-02).
- ^ Why Cafebabe. Artima.com. [2009-10-01]. (原始内容存档于2012-07-02).
- ^ Pack200: A Packed Class Deployment Format For Java Applications. [2010-11-03].
- ^ Yet Another Gamecube Documentation: Dolphin-OS Globals. [2011-09-05]. (原始内容存档于2012-07-02).
- ^ Wiibrew: Memory Map. [2011-09-05]. (原始内容存档于2012-07-02).
- ^ DEADBABE sanity check. [2009-10-01]. (原始内容存档于2012-07-02).
- ^ Jargon File entry for DEADBEEF. Catb.org. [2009-10-01]. (原始内容存档于2012-07-02).
- ^ Bug Check 0xDEADDEAD: MANUALLY_INITIATED_CRASH, MSDN. msdn.microsoft.com. 2009-10-01 [2009-10-13]. (原始内容存档于2009-10-02).
- ^ Bug Check 0xE2: MANUALLY_INITIATED_CRASH, MSDN. msdn.microsoft.com. 2009-10-01 [2009-10-13]. (原始内容存档于2009-07-31).
- ^ Opensolaris header line 45 for 0xDEFEC8ED. src.opensolaris.org. [2011-07-12]. (原始内容存档于2011-09-29).
- ^ Documents That Are Supported by the Office Filter. [2011-09-04]. (原始内容存档于2012-07-02).
- ^ Technet article for 0xFACEFEED. Support.microsoft.com. 2006-11-01 [2009-10-01]. (原始内容存档于2012-07-02).
- ^ include/linux/reboot.h. (原始内容存档于2012-07-02).