ASCII(美国信息交换标准编码)表 | |||||||||||
字符 | ASCII代码 | 字符 | ASCII代码 | 字符 | ASCII代码 | ||||||
二进制 | 十进制 | 十六进制 | 二进制 | 十进制 | 十六进制 | 二进制 | 十进制 | 十六进制 | |||
回车 | 1101 | 13 | 0D | ? | 111111 | 63 | 3F | a | 1100001 | 97 | 61 |
ESC | 11011 | 27 | 1B | @ | 1000000 | 64 | 40 | b | 1100010 | 98 | 62 |
空格 | 100000 | 32 | 20 | A | 1000001 | 65 | 41 | c | 1100011 | 99 | 63 |
! | 100001 | 33 | 21 | B | 1000010 | 66 | 42 | d | 1100100 | 100 | 64 |
" | 100010 | 34 | 22 | C | 1000011 | 67 | 43 | e | 1100101 | 101 | 65 |
# | 100011 | 35 | 23 | D | 1000100 | 68 | 44 | f | 1100110 | 102 | 66 |
$ | 100100 | 36 | 24 | E | 1000101 | 69 | 45 | g | 1100111 | 103 | 67 |
% | 100101 | 37 | 25 | F | 1000110 | 70 | 46 | h | 1101000 | 104 | 68 |
& | 100110 | 38 | 26 | G | 1000111 | 71 | 47 | i | 1101001 | 105 | 69 |
, | 100111 | 39 | 27 | H | 1001000 | 72 | 48 | j | 1101010 | 106 | 6A |
( | 101000 | 40 | 28 | I | 1001001 | 73 | 49 | k | 1101011 | 107 | 6B |
) | 101001 | 41 | 29 | J | 1001010 | 74 | 4A | l | 1101100 | 108 | 6C |
* | 101010 | 42 | 2A | K | 1001011 | 75 | 4B | m | 1101101 | 109 | 6D |
+ | 101011 | 43 | 2B | L | 1001100 | 76 | 4C | n | 1101110 | 110 | 6E |
, | 101100 | 44 | 2C | M | 1001101 | 77 | 4D | o | 1101111 | 111 | 6F |
- | 101101 | 45 | 2D | N | 1001110 | 78 | 4E | p | 1110000 | 112 | 70 |
. | 101110 | 46 | 2E | O | 1001111 | 79 | 4F | q | 1110001 | 113 | 71 |
/ | 101111 | 47 | 2F | P | 1010000 | 80 | 50 | r | 1110010 | 114 | 72 |
0 | 110000 | 48 | 30 | Q | 1010001 | 81 | 51 | s | 1110011 | 115 | 73 |
1 | 110001 | 49 | 31 | R | 1010010 | 82 | 52 | t | 1110100 | 116 | 74 |
2 | 110010 | 50 | 32 | S | 1010011 | 83 | 53 | u | 1110101 | 117 | 75 |
3 | 110011 | 51 | 33 | T | 1010100 | 84 | 54 | v | 1110110 | 118 | 76 |
4 | 110100 | 52 | 34 | U | 1010101 | 85 | 55 | w | 1110111 | 119 | 77 |
5 | 110101 | 53 | 35 | V | 1010110 | 86 | 56 | x | 1111000 | 120 | 78 |
6 | 110110 | 54 | 36 | W | 1010111 | 87 | 57 | y | 1111001 | 121 | 79 |
7 | 110111 | 55 | 37 | X | 1011000 | 88 | 58 | z | 1111010 | 122 | 7A |
8 | 111000 | 56 | 38 | Y | 1011001 | 89 | 59 |
|
|
|
|
9 | 111001 | 57 | 39 | Z | 1011010 | 90 | 5A | { | 1111011 | 123 | 7B |
: | 111010 | 58 | 3A | [ | 1011011 | 91 | 5B | | | 1111100 | 124 | 7C |
; | 111011 | 59 | 3B | \ | 1011100 | 92 | 5C | } | 1111101 | 125 | 7D |
< | 111100 | 60 | 3C | ] | 1011101 | 93 | 5D | ~ | 1111110 | 126 | 7E |
= | 111101 | 61 | 3D | ^ | 1011110 | 94 | 5E |
|
|
|
|
> | 111110 | 62 | 3E | - | 1011111 | 95 | 5F |
|
|
|
|
控制字符:
编码 | 十六进制 | 缩写 | 字符名称 | 中文意义 | 编码 | 十六进制 | 缩写 | 字符名称 | 中文意义 |
0 | 0 | NUL | Null | 空 | 1 | 1 | SOH | Start of Heading | 报头开始 |
2 | 2 | STX | Start of Text | 正文开始 | 3 | 3 | ETX | Start of Text | 正文开始 |
4 | 4 | EOT | End of Transmission | 传输结束 | 5 | 5 | ENQ | Enquiry | 查询 |
6 | 6 | ACK | Acknowledge | 确认 | 7 | 7 | BEL | Bell | 振铃 |
8 | 8 | BS | Backspace | 退格 | 9 | 9 | HT | Horizontal Tab | 水平制表 |
10 | 0A | LF | Line Feed | 换行 | 11 | 0B | VT | Vertical Tab | 垂直制表 |
12 | 0C | FF | Form Feed | 换页 | 13 | 0D | CR | Carriage Return | 回车 |
14 | 0E | SO | Shift Out | 移出 | 15 | 0F | SI | Shift In | 移入 |
16 | 10 | DLE | Data Link Escape | 数据链路转义 | 17 | 11 | DC1 | Device Control 1 | 设备控制1 |
18 | 12 | DC2 | Device Control 2 | 设备控制2 | 19 | 13 | DC3 | Device Control 3 | 设备控制3 |
20 | 14 | DC4 | Device Control 4 | 设备控制4 | 21 | 15 | NAK | Negative Acknowledge | 否认 |
22 | 16 | SYN | Synchronous Idle | 同步空闲 | 23 | 17 | ETB | End of Transmission Block | 传输块结束 |
24 | 18 | CAN | Cancel | 取消 | 25 | 19 | EM | End of Medium | 介质结束 |
26 | 1A | SUB | Substitute | 替换 | 27 | 1B | ESC | Escape | 转义 |
28 | 1C | FS | File Separator | 文件分隔符 | 29 | 1D | GS | Group Separator | 分组符 |
30 | 1E | RS | Record Separator | 记录分隔符 | 31 | 1F | US | Unit Separator | 单元分隔符 |
32 | 20 | SP | Space | 空格 | 127 | 7F | DEL | Delete | 删除
|
ASCII字符表:
扩展ASCII字符表:
(注:要在console窗口打印查看扩展ASCII字符表,请先设置代码页为437.(SetConsoleOutputCP(437)))
计算机发明后,为了在计算机中表示字符,人们制定了一种编码,叫ASCII码。ASCII码由一个字节中的7位(bit)表示,范围是0x00 - 0x7F 共128个字符。他们以为这128个数字就足够表示abcd....ABCD....1234 这些字符了。
咳......说英语的人就是“笨”!后来他们突然发现,如果需要按照表格方式打印这些字符的时候,缺少了“制表符”。于是又扩展了ASCII的定义,使用一个字节的全部8位(bit)来表示字符了,这就叫扩展ASCII码。范围是0x00 - 0xFF 共256个字符。
咳......说中文的人就是聪明!中国人利用连续2个扩展ASCII码的扩展区域(0xA0以后)来表示一个汉字,该方法的标准叫GB-2312。后来,日文、韩文、阿拉伯文、台湾繁体(BIG-5)......都使用类似的方法扩展了本地字符集的定义,现在统一称为 MBCS 字符集(多字节字符集)。这个方法是有缺陷的,因为各个国家地区定义的字符集有交集,因此使用GB-2312的软件,就不能在BIG-5的环境下运行(显示乱码),反之亦然。
咳......说英语的人终于变“聪明”一些了。为了把全世界人民所有的所有的文字符号都统一进行编码,于是制定了UNICODE标准字符集。UNICODE 使用2个字节表示一个字符(unsigned shor int、WCHAR、_wchar_t、OLECHAR)。这下终于好啦,全世界任何一个地区的软件,可以不用修改地就能在另一个地区运行了。虽然我用 IE 浏览日本网站,显示出我不认识的日文文字,但至少不会是乱码了。UNICODE 的范围是 0x0000 - 0xFFFF 共6万多个字符,其中光汉字就占用了4万多个。嘿嘿,中国人赚大发了:0)
在程序中使用各种字符集的方法:
const char * p = "Hello"; // 使用 ASCII 字符集
const char * p = "你好"; // 使用 MBCS 字符集,由于 MBCS 完全兼容 ASCII,多数情况下,我们并不严格区分他们
LPCSTR p = "Hello,你好"; // 意义同上
const WCHAR * p = L"Hello,你好"; // 使用 UNICODE 字符集
LPCOLESTR p = L"Hello,你好"; // 意义同上
// 如果预定义了_UNICODE,则表示使用UNICODE字符集;如果定义了_MBCS,则表示使用 MBCS
const TCHAR * p = _T("Hello,你好");
LPCTSTR p = _T("Hello,你好"); // 意义同上
在上面的例子中,T是非常有意思的一个符号(TCHAR、LPCTSTR、LPTSTR、_T()、_TEXT()...),它表示使用一种中间类型,既不明确表示使用 MBCS,也不明确表示使用 UNICODE。那到底使用哪种字符集那?嘿嘿......编译的时候决定吧。设置条件编译的方式是:VC6中,"Project\Settings...\C/C++卡片 Preprocessor definitions" 中添加或修改 _MBCS、_UNICODE;VC.NET中,"项目\属性\配置属性\常规\字符集"然后用组合窗进行选择。使用 T 类型,是非常好的习惯,严重推荐!