Hexspeak

Hexspeak(十六进制魔术数字)是一种类似Leet的英文单词转写形式。

起源和写法
Hexspeak最早是-{zh-cn:程序员; zh-tw:程式設計師;}-用来清晰独特地标记-{zh-cn:内存; zh-tw:記憶體;}-和-{zh-cn:数据; zh-tw:資料;}-的一些魔术数字,使用以0-9与A-F构成的16进制数表示一些简单的英文单词。Hexspeak的转写规则为:数字“0”表示字母“O”,“1”表示“I”或“L”,“5”表示“S”,“7”表示“T”,“6”、“9”则各自表示“G”与“g”,其它的数字则可利用画谜和Leet的规则来借代字母,例如“defecate”就可用“DEFECA7E”或“DEFEC8”来表示。

较有名的魔术数
16进制魔术数在许多处理器、操作系统和-{zh-cn:调试工具; zh-tw:除錯工具;}-中都得到应用,且尤常作为-{zh-cn:调试量; zh-tw:測試參數;}-使用。

*0x0000000FF1CE是微软Office组件产品代码的最后一部分,可于-{zh-cn:注册表; zh-tw:註冊表;}-的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)函数中使用,用以在已启用调试堆的情况下,标识未初始化的分配堆-{zh-cn:内存; zh-tw:記憶體;}-。

*0xCAFEBABE(“cafe babe”)在Mach-O格式文件中用于标识通用二进制目标文件,同时也在Java中用于识别Java字节码类文件。

*0xCAFED00D(“Cafe Dude”)在Java中用于识别Pack200压缩格式。

*0xD15EA5E(“disease”)是任天堂GameCube与Wii控制台正常启动的标识符。

*0xDEADBABE(“Dead Babe”)在IBM的Jikes研究虚拟机上使用,用于确认主线程的栈是否正常。

*0xDEADBEEF(“dead beef”)在嵌入式系统中常用于标示-{zh-cn:软件; zh-tw:軟體;}-崩溃或是-{zh-cn:死锁; zh-tw:死結;}-,在IBM RS/6000系统、32位PowerPC处理器上的Mac OS系统以及Commodore International的Amiga电脑上都有使用;而在Sun的Solaris操作系统中,这一魔术数则用于标记已释放的-{zh-cn:内核存储; zh-tw:記憶體儲存;}-空间。另外,在Alpha处理器上的OpenVMS操作系统中,按下CTRL+T就可以看到DEAD_BEEF。DEC Alpha的控制台亦有一个用于检测-{zh-cn:内存; zh-tw:記憶體;}-错误的后台进程,PS识别为“BeefEater waiting on 0xdeadbeef”。

*0xDEADDEAD(“dead dead”)是-{zh-cn:蓝屏; zh-tw:藍白當機畫面;}-时显示的错误代码 。由于此代码在基于Windows NT的系统上用于进行-{zh-cn:内存转储; zh-tw:核心文件;}-,因而常为驱动开发者所见。0xDEADDEAD还有一个变种──0x000000E2,这两者在微软开发者网络中都被称为MANUALLY_INITIATED_CRASH。

*0xDEADFA11(“dead fall”)为iOS应用程序崩溃报告中的“强制终止应用程序”的标识符。

*0xE011CFD0在微软Office文件中使用,小端序下表示为D0CF11E0,也即“docfile0”。

*0xFACEFEED(“face feed”)在运行Windows NT的Alpha服务器上使用,也即当出现-{zh-cn:硬件; zh-tw:硬體;}-错误时,Alpha的-{zh-cn:硬件; zh-tw:硬體;}-抽象层就会产生这一错误信号。

*0xFEE1DEAD(“feel dead”)是Linux重启系统-{zh-cn:调用; zh-tw:呼叫;}-中使用的魔术数。

*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)。

*在型上16进制数是用俄语字母而非拉丁字母表示的,也即“−”、“L”、“C”、“Г”、“E”与空格,以此便可表示如“EГГ0Г”(即ERROR)这样的信息。

参见
*Leet
*魔术数字

注释

评论 (0)

  • 还没有评论,来抢沙发吧。