0–16 进制对照表
| 十进制Decimal | 二进制Binary | 八进制Octal | 十六进制Hexadecimal |
|---|---|---|---|
| 0 | 0 | 0 | 0 |
| 1 | 1 | 1 | 1 |
| 2 | 10 | 2 | 2 |
| 3 | 11 | 3 | 3 |
| 4 | 100 | 4 | 4 |
| 5 | 101 | 5 | 5 |
| 6 | 110 | 6 | 6 |
| 7 | 111 | 7 | 7 |
| 8 | 1000 | 10 | 8 |
| 9 | 1001 | 11 | 9 |
| 10 | 1010 | 12 | A |
| 11 | 1011 | 13 | B |
| 12 | 1100 | 14 | C |
| 13 | 1101 | 15 | D |
| 14 | 1110 | 16 | E |
| 15 | 1111 | 17 | F |
| 16 | 10000 | 20 | 10 |
| 255 | 11111111 | 377 | FF |
ASCII 常用码表
ASCII 共 128 个码位(0–127),其中 0–31 与 127 是不可打印的控制字符,32–126 是可打印字符。背下三个锚点最实用:大写 A 是 65、小写 a 是 97(两者差 32)、数字 0 是 48。这样任意字母都能推出来:例如 K = 65 + 10 = 75,k = 97 + 10 = 107。汉字不在 ASCII 范围内,这是中文在纯 ASCII 系统里必然乱码的根本原因。
| 十进制Dec | 十六进制Hex | 字符Character |
|---|---|---|
| 9 | 09 | Tab(制表符)Tab |
| 10 | 0A | LF(换行)LF (line feed) |
| 13 | 0D | CR(回车)CR (carriage return) |
| 32 | 20 | 空格Space |
| 33 | 21 | ! |
| 34 | 22 | " |
| 36 | 24 | $ |
| 37 | 25 | % |
| 38 | 26 | & |
| 40 | 28 | ( |
| 41 | 29 | ) |
| 42 | 2A | * |
| 43 | 2B | + |
| 44 | 2C | , |
| 47 | 2F | / |
| 48 – 57 | 30 – 39 | 数字 0 – 9Digits 0 – 9 |
| 58 | 3A | : |
| 61 | 3D | = |
| 63 | 3F | ? |
| 64 | 40 | @ |
| 65 – 90 | 41 – 5A | 大写 A – ZA – Z (uppercase) |
| 91 – 96 | 5B – 60 | [ \ ] ^ _ ` |
| 95 | 5F | _ |
| 97 – 122 | 61 – 7A | 小写 a – za – z (lowercase) |
| 123 – 126 | 7B – 7E | { | } ~ |
| 127 | 7F | DEL(删除)DEL (delete) |
想批量转换时用 进制转换工具 或 编码转换工具,别手算长串。For bulk work, use the base converter or the encoding converter instead of doing it by hand.
进制互转怎么手算
十进制转二进制用「除 2 取余、倒序排列」:把 156 反复除以 2 取余数,得到 10011100。二进制转十进制用「按位权展开」:从右往左第 n 位(从 0 开始)的权重是 2ⁿ,所以 1010 = 8 + 2 = 10。二进制与十六进制之间最省事:四位二进制正好一位十六进制,例如 1010 1111 就是 A F,即 0xAF;同理三位一组就是八进制。记住「8421」这四个权重,十六进制与二进制互转几秒钟就能完成。
常见前缀与表示法
不同场景用不同写法表示同一个值:0xAF(C 系语言与 JS 的十六进制)、0b1010(部分语言的二进制字面量)、0o17 或 017(八进制,注意前导 0 在老代码里是八进制陷阱)、\x41(字符串转义表示 A)、%41(URL 编码中的十六进制)、A 或 A(HTML 实体表示 A)。Base64 是另一回事:它把二进制按 6 位一组映射到 64 个字符,用于传输而不是加密,任何人都能还原,所以不要用它「保护」敏感数据。
ASCII 不等于 Unicode
ASCII 只覆盖 128 个码位,而 Unicode 是字符集(给每个字符一个码点,例如「图」是 U+56FE),UTF-8 是它的编码方式之一:ASCII 范围的字符仍占 1 字节,常用汉字占 3 字节,emoji 通常占 4 字节。GBK 是另一套编码,一个汉字占 2 字节且与 UTF-8 不兼容——用 UTF-8 打开 GBK 文件就会看到「锟斤拷」这类乱码。排查乱码的顺序是:先确认文件的真实编码,再确认读取端声明的编码,两者不一致就修复其中一端;数据库与接口还要检查连接字符集是否为 utf8mb4,否则 emoji 会被截断或报错。
常见问题
十进制 255 的十六进制是多少?
是 FF(即 0xFF)。因为 255 = 15 × 16 + 15,而 15 在十六进制里写作 F。它是一个字节能表示的最大无符号值,所以常出现在掩码与颜色值(如 #FFFFFF)里。
为什么十六进制前面要加 0x?
为了区分进制:10 是十进制十,0x10 是十进制十六。C 系语言沿用这一约定,JS 也支持;八进制的 0o17 与前导 0 的旧写法容易混淆,新代码建议统一用 0o。
中文乱码是怎么产生的?
把一种编码的字节按另一种编码解读就会乱码,例如用 UTF-8 打开 GBK 文本,或用 GBK 打开 UTF-8 文本。解决办法是统一编码(推荐 UTF-8),并在文件、数据库与接口三处都声明一致。