ASCII码表搜65为什么出现两行?先分清十进制、十六进制和字符
ASCII码表
点击使用相关工具
在ASCII码表查询的搜索框输入65,结果里既有大写A,也有小写e。先别把第二行当成错误:A的十进制码值是65,e的十六进制码值写作65。这张表的搜索同时检查多列,只看数字而不看列名,容易把同一串字符当成同一种数值。
用65和41各查一次
打开工具,输入65后会留下下面两行。表格中的二进制统一补到8位,十六进制不带0x前缀。
| 字符 | 十进制 | 十六进制 | 八进制 | 二进制 |
|---|---|---|---|---|
| A | 65 | 41 | 101 | 01000001 |
| e | 101 | 65 | 145 | 01100101 |
读第一行时,十六进制41可以复算为4×16+1=65;第二行的十六进制65则是6×16+5=101。它们不是两个字符共用一个ASCII码,而是两列采用了不同进制。
再把搜索框改成41,会看到右括号)与A:右括号的十进制值是41,A的十六进制值是41。要找十进制41,应看十进制列为41的那一行,不能只凭数字命中就选用。
搜索A并不只返回字母A
当前筛选规则是十进制文本、十六进制文本、字符显示三项中,任意一项包含输入内容就保留,而且比较时不区分英文字母大小写。它既不是精确码值查询,也没有进制选择开关。
输入A和输入a,当前都会得到11行。除了大小写字母本身,十六进制中含A的行,以及控制字符显示中的^A也可能命中。因此,搜索A不能用来判断“A和a编码相同”。若手里记着0x41,应在本页输入41再核对十六进制列;直接输入0x41不会找到对应行。
二进制和八进制虽然展示在表中,却不参与搜索。例如输入01000001没有结果,不能据此认定这个二进制写法无效。删除搜索框里的全部内容,会恢复128行。
A和a相差32,只适用于对应的英文字母
想核对大小写关系,可以分别找十进制65与97所在的行:A对应65,小写a对应97,97−65=32。Z与z分别是90和122,也相差32。这是ASCII字母区间的排列关系,不是“任意字符加32就能转小写”的通用规则;数字、标点、汉字都不能照搬。
特别容易混淆的是字符0与数值零:字符0在表中的十进制码值是48、十六进制是30;十进制码值0对应NUL,本页把它显示成^@。整理协议或程序输出时,先确认你拿到的是字符本身,还是记录字符编号的一段数字。
表里有128行,为什么二进制却有8位?
标准ASCII用7位表示0至127。本站为方便对齐,把二进制列补上前导0,显示成8位;例如A的01000001与去掉首位0后的1000001数值相同。这不表示本表收录了256个字符,也不能把128至255当作一套统一的“标准ASCII扩展”。标准码表可参照RFC 20的ASCII表。
有些格子不是可打印字形。9、10、13在本页分别显示为^I、^J、^M,对应制表、换行和回车的控制码;这里的两字符写法是显示标记,并不等于原文本真的含有一个脱字符和一个字母。32是空格,格子看起来空白也不代表没有码值。
搜“中文”没有结果属于范围限制,不是乱码诊断。若拿到的是\u4E2D这样的文本,可以另看Unicode反斜杠与四位十六进制的说明。ASCII查表负责核对这128个位置,不会自动识别未知文件编码,也不会把整段中文转成另一种字符集。