有趣的字节
手持两把锟斤拷,口中疾呼烫烫烫。脚踏千朵屯屯屯,笑看万物锘锘锘。
上面的话之所以火了起来,是因为戳中了万千程序员的笑点,其背后的原理让人玩味不已。其原理主要涉及到中文编码的问题,具体内容还没想好怎么写,下面列出来一些文章供大家参考。
我的测试代码
>>> print(u"\ufffd\ufffd".encode('utf-8'))
锟斤拷
# VS常见汉字
>>> print("\x90\x90".decode('gbk'))
悙
>>> print("\xcc\xcc".decode('gbk'))
烫
>>> print("\xcd\xcd".decode('gbk'))
屯
>>> print("\xca\xfe".decode('gbk'))
漱
# 打印所有叠字节
>>> for i in range(256):print("%02X%02X" % (i, i))
...
0000
0101
0202
VS常见初始值
-
0xcccccccc : Used by Microsoft’s C++ debugging runtime library to mark uninitialised stack memory
-
0xcdcdcdcd : Used by Microsoft’s C++ debugging runtime library to mark uninitialised heap memory
-
0xfeeefeee : Used by Microsoft’s HeapFree() to mark freed heap memory
-
0xabababab : Used by Microsoft’s HeapAlloc() to mark “no man’s land” guard bytes after allocated heap memory
-
0xabadcafe : A startup to this value to initialize all free memory to catch errant pointers
-
0xbaadf00d : Used by Microsoft’s LocalAlloc(LMEM_FIXED) to mark uninitialised allocated heap memory
-
0xbadcab1e : Error Code returned to the Microsoft eVC debugger when connection is severed to the debugger
-
0xbeefcace : Used by Microsoft .NET as a magic number in resource files
-
0xdddddddd - Deleted, DEBUG版本,标记为删除
-
0xfdfdfdfd - DEBUG版,内存块边界
参考:VC调试基础知识
模数
看到上面的这些,会让人想到模数这个词,英文是“Magic Number”,很多文件格式都会在自己的头部写入模数,用于表示文件类型(如PNG、PE等),一些网络协议也会用到模数。以后有空了补个模数大全。^_^
总结
脑子有点发散,没收回来,其实今天(2019-2-22)就是看到了下面的代码,然后想到了“烫屯”,然后想查下还有什么奇怪的字没了。结果就出来了上面的总结,以后一定用得到的。
// VS会显示一堆“惇”字
memset(changedBytes, 0x90, sizeof(changedBytes));