ascii键码值

ASCII(American Standard Code for Information Interchange)定义从 0 到 127 的共128个数字所代表的英文字母或一样的结果与意义。由于使用7个位(bit)就可以表示从0到127的数字,大部分的电脑都使用8个位来存取字元集(character set),所以从128到255之间的数字可以用来代表另一组128个符号,称为extended ASCII。

 

目前计算机中用得最广泛的字符集及其编码,是由美国国家标准局(ANSI)制定的ASCII码(American Standard Code for Information Interchange,美国标准信息交换码),它已被国际标准化组织(ISO)定为国际标准,称为ISO 646标准。适用于所有拉丁文字字母,ASCII码有7位码和8位码两种形式。  

 

因为1位二进制数可以表示(21=)2种状态: 0、1;而2位二进制数可以表示(22)=4种状态:00、01、10、11;依次类推,7位二进制数可以表示(27=)128种状态,每种状态都唯一地 编为一个7位的二进制码,对应一个字符(或控制码),这些码可以排列成一个十进制序号0~127。所以,7位ASCII码是用七位二进制数进行编码的,可 以表示128个字符。

 

第0~32号及第127号(共34个)是控制字符或通讯专用字符,如控制符:LF(换行)、CR(回车)、FF(换页)、DEL(删除)、BEL(振铃)等;通讯专用字符:SOH(文头)、EOT(文尾)、ACK(确认)等; 

 

第33~126号(共94个)是可打印字符,其中第48~57号为0~9十个阿拉伯数字;65~90号为26个大写英文字母,97~122号为26个小写英文字母,其余为一些标点符号、运算符号等。  

 

注意:在计算机的存储单元中,一个ASCII码值占一个字节(8个二进制位),其最高位(b7)用作奇偶校验位。所谓奇偶校验,是指在代码传送过程中用来检验是否出现错误的一种方法,一般分奇校验和偶校验两种。奇校验规定:正确的代码一个字节中1的个数必须是奇数,若非奇数,则在最高位b7添1;偶校验规定:正确的代码一个字节中1的个数必须是偶数,若非偶数,则在最高位b7添1。  

 

为了便于查询,以下列出ASCII码表:常用ASCII 码对照表

第128~255号为扩展字符(不常用)

Bin                  Dec       Hex         缩写/字符                                        解释 

0000 0000     0           00             NUL (null)                                       空字符    

0000 0001     1           01             SOH (start of handing)                   标题开始  

0000 0010     2           02             STX (start of text)                           正文开始  

0000 0011     3           03             ETX (end of text)                           正文结束 

0000 0100     4           04             EOT (end of transmission)             传输结束  

0000 0101     5           05             ENQ (enquiry)                               请求  

0000 0110     6           06             ACK (acknowledge)                       收到通知  

0000 0111     7           07             BEL (bell)                                       响铃 

0000 1000     8           08             BS (backspace)                             退格  

0000 1001     9           09             HT (horizontal tab)                         水平制表符  

0000 1010     10         0A             LF (NL line feed, new line)             换行键  

0000 1011     11         0B             VT (vertical tab)                             垂直制表符  

0000 1100     12         0C             FF (NP form feed, new page)         换页键  

0000 1101     13         0D             CR (carriage return)                       回车键 

0000 1110     14         0E             SO (shift out)                                 不用切换  

0000 1111     15         0F             SI (shift in)                                     启用切换  

0001 0000     16         10             DLE (data link escape)                   数据链路转义  

0001 0001     17         11             DC1 (device control 1)                   设备控制1  

0001 0010     18         12             DC2 (device control 2)                   设备控制2  

0001 0011     19         13             DC3 (device control 3)                   设备控制3  

0001 0100     20         14             DC4 (device control 4)                   设备控制4  

0001 0101     21         15             NAK (negative acknowledge)         拒绝接收  

0001 0110     22         16             SYN (synchronous idle)                 同步空闲  

0001 0111     23         17             ETB (end of trans. block)               传输块结束  

0001 1000     24         18             CAN (cancel)                                 取消 

0001 1001     25         19             EM (end of medium)                       介质中断  

0001 1010     26         1A             SUB (substitute)                             替补  

0001 1011     27         1B             ESC (escape)                                 溢出  

0001 1100     28         1C             FS (file separator)                         文件分割符  

0001 1101     29         1D             GS (group separator)                     分组符  

0001 1110     30         1E             RS (record separator)                   记录分离符  

0001 1111     31         1F             US (unit separator)                         单元分隔符  

 

0010 0000     32         20             空格 

0010 0001     33         21             !

0010 0010     34         22             " 

0010 0011     35         23             # 

0010 0100     36         24             $ 

0010 0101     37         25             % 

0010 0110     38         26             &

0010 0111     39         27             ' 

0010 1000     40         28             ( 

0010 1001     41         29             ) 

0010 1010     42         2A             * 

0010 1011     43         2B             + 

0010 1100     44         2C             , 

0010 1101     45         2D             - 

0010 1110     46         2E             . 

0010 1111     47         2F             / 

0011 0000     48         30             0 

0011 0001     49         31             1 

0011 0010     50         32             2 

0011 0011     51         33             3 

0011 0100     52         34             4 

0011 0101     53         35             5 

0011 0110     54         36             6 

0011 0111     55         37             7 

0011 1000     56         38             8 

0011 1001     57         39             9 

0011 1010     58         3A             : 

0011 1011     59         3B             ; 

0011 1100     60         3C             <

0011 1101     61         3D             = 

0011 1110     62         3E             > 

0011 1111     63         3F             ? 

0100 0000     64         40             @ 

 

0100 0001     65         41             A 

0100 0010     66         42             B 

0100 0011     67         43             C 

0100 0100     68         44             D 

0100 0101     69         45             E 

0100 0110     70         46             F 

0100 0111     71         47             G 

0100 1000     72         48             H 

0100 1001     73         49             I 

0100 1010     74         4A             J 

0100 1011     75         4B             K 

0100 1100     76         4C             L 

0100 1101     77         4D             M 

0100 1110     78         4E             N 

0100 1111     79         4F             O 

0101 0000     80         50             P 

0101 0001     81         51             Q 

0101 0010     82         52             R 

0101 0011     83         53             S 

0101 0100     84         54             T 

0101 0101     85         55             U 

0101 0110     86         56             V 

0101 0111     87         57             W 

0101 1000     88         58             X 

0101 1001     89         59             Y 

0101 1010     90         5A             Z 

0101 1011     91         5B             [ 

0101 1100     92         5C             / 

0101 1101     93         5D             ] 

0101 1110     94         5E             ^ 

0101 1111     95         5F             _ 

0110 0000     96         60             ` 

 

0110 0001     97         61             a 

0110 0010     98         62             b 

0110 0011     99         63             c 

0110 0100     100       64             d 

0110 0101     101       65             e 

0110 0110     102       66             f 

0110 0111     103       67             g 

0110 1000     104       68             h 

0110 1001     105       69             i 

0110 1010     106       6A             j 

0110 1011     107       6B             k 

0110 1100     108       6C             l 

0110 1101     109       6D             m 

0110 1110     110       6E             n 

0110 1111     111       6F             o 

0111 0000     112       70             p 

0111 0001     113       71             q 

0111 0010     114       72             r 

0111 0011     115       73             s 

0111 0100     116       74             t 

0111 0101     117       75             u 

0111 0110     118       76             v 

0111 0111     119       77             w 

0111 1000     120       78             x 

0111 1001     121       79             y 

0111 1010     122       7A             z 

0111 1011     123       7B             { 

0111 1100     124       7C             | 

0111 1101     125       7D             } 

0111 1110     126       7E             ~  

 

0111 1111     127       7F             DEL (delete)                                 删除   

ESC键           VK_ESCAPE (27)

回车键:        VK_RETURN (13)

TAB键:       VK_TAB (9)

Caps Lock键: VK_CAPITAL (20)

Shift键:         VK_SHIFT ()

Ctrl键:         VK_CONTROL (17)

Alt键:          VK_MENU (18)

空格键:         VK_SPACE (/32)

退格键:         VK_BACK (8)

左徽标键: VK_LWIN (91)

右徽标键:    VK_LWIN (92)

鼠标右键快捷键:VK_APPS (93) 

Insert键:        VK_INSERT (45)

Home键:        VK_HOME (36)

Page Up:       VK_PRIOR (33)

PageDown: VK_NEXT (34)

End键:          VK_END (35)

Delete键:       VK_DELETE (46)

方向键(←):    VK_LEFT (37)

方向键(↑):    VK_UP (38)

方向键(→):    VK_RIGHT (39)

方向键(↓):    VK_DOWN (40)

F1键:             VK_F1 (112)

F2键:             VK_F2 (113)

F3键:             VK_F3 (114)

F4键:             VK_F4 (115)

F5键:             VK_F5 (116)

F6键:             VK_F6 (117)

F7键:             VK_F7 (118)

F8键:             VK_F8 (119)

F9键:             VK_F9 (120)

F10键:           VK_F10 (121)

F11键:           VK_F11 (122)

F12键:          VK_F12 (123)

Num Lock键: VK_NUMLOCK (144)

小键盘0:        VK_NUMPAD0 (96)

小键盘1:         VK_NUMPAD0 (97)

小键盘2:         VK_NUMPAD0 (98)

小键盘3:         VK_NUMPAD0 (99)

小键盘4:        VK_NUMPAD0 (100)

小键盘5:        VK_NUMPAD0 (101)

小键盘6:         VK_NUMPAD0 (102)

小键盘7:         VK_NUMPAD0 (103)

小键盘8:         VK_NUMPAD0 (104)

小键盘9:        VK_NUMPAD0 (105)

小键盘.:         VK_DECIMAL (110)

小键盘*:         VK_MULTIPLY (106)

小键盘+:         VK_MULTIPLY (107)

小键盘-:         VK_SUBTRACT (109)

小键盘/:         VK_DIVIDE (111)

Pause Break键: VK_PAUSE (19)

Scroll Lock键: VK_SCROLL (145)

<think>好的,用户想知道如何用编程语言捕获键盘上下方向键的键码。首先,我得考虑不同编程语言可能有不同的方法。比如C++、Python、JavaScript等,每种语言的处理方式可能不一样。然后,用户特别提到了上下方向键,这些键属于非ASCII字符,可能需要特殊处理。 首先,我需要回顾之前提供的引用内容。引用[1]提到C++中的getch()函数可以获取按键的码,而引用[2]展示了Python中使用pynput库控制键盘的例子。引用[3]指出使用scanf处理非ASCII字符可能无效,这可能是因为这些键产生的是多个字节的扫描码,而不是单个字符。引用[4]是关于Vue中绑定键盘事件的,可能涉及JavaScript中的事件处理。 接下来,我需要分语言来解答。对于C/C++,使用getch()函数,但要注意上下方向键通常会返回两个,比如224和72/80。需要两次读取才能获取完整的键码。在Python中,可以使用msvcrt模块或者pynput库,pynput更高级,可以监听事件。JavaScript的话,通过键盘事件对象的keyCode或key属性来识别方向键,比如keyCode为38和40,或者key属性为'ArrowUp'和'ArrowDown'。 还需要注意不同操作系统可能存在的差异,比如Windows和Linux下的键码可能不同,但大多数情况下编程库会处理这些差异。例如,pynput库是跨平台的,而C++的getch()可能在Windows下更常用,可能需要特定头文件如conio.h。 用户可能遇到的问题包括如何正确读取多字节的键码,比如在C++中需要两次getch()调用,否则可能得到错误的结果。此外,如何处理非阻塞输入,或者如何在GUI应用中捕获按键事件,比如在Web开发中使用JavaScript,或者在桌面应用中使用相应框架的事件监听。 可能还需要提到其他方法,比如在Python中使用keyboard库,或者使用跨平台的SDL库等。同时,需要强调测试的重要性,因为不同终端或环境可能表现不同,例如在命令行中运行程序时,方向键的处理可能与GUI环境不同。 最后,确保回答结构清晰,分语言给出示例代码,并解释关键点,比如键码的获取方式和注意事项。还要生成相关问题,帮助用户深入理解,比如处理其他特殊按键或跨平台兼容性问题。</think>### 如何捕获键盘上下方向键的键码 #### 1. **C/C++ 实现** 在C/C++中,可使用`getch()`函数(需包含`conio.h`头文件)捕获方向键。上下方向键会返回两个字节: ```c #include <stdio.h> #include <conio.h> int main() { int ch = getch(); if (ch == 0 || ch == 224) { // 特殊键前缀 ch = getch(); // 获取实际键码 switch(ch) { case 72: printf("上方向键\n"); break; // ↑键码 case 80: printf("下方向键\n"); break; // ↓键码 } } return 0; } ``` **注意**:上下方向键在Windows系统中返回`224`+`72/80`的组合[^1][^3]。 --- #### 2. **Python 实现** ##### 方法1:使用`pynput`库(跨平台) ```python from pynput.keyboard import Key, Listener def on_press(key): if key == Key.up: print("↑键码: Key.up") elif key == Key.down: print("↓键码: Key.down") with Listener(on_press=on_press) as listener: listener.join() ``` ##### 方法2:使用`msvcrt`模块(仅Windows) ```python import msvcrt while True: key = msvcrt.getch() if key == b'\xe0': # 特殊键前缀 key = msvcrt.getch() if key == b'H': print("↑键码: 72") elif key == b'P': print("↓键码: 80") ``` --- #### 3. **JavaScript 实现** 通过`keydown`事件监听: ```javascript document.addEventListener('keydown', (event) => { switch(event.key) { case 'ArrowUp': console.log("↑键码: ArrowUp"); break; case 'ArrowDown': console.log("↓键码: ArrowDown"); break; } }); ``` --- ### 关键原理 - **非ASCII键码**:方向键等特殊按键会产生多个字节或特殊标识符[^1][^3] - **跨平台差异**:Windows系统返回前缀`224`,Linux终端可能返回转义序列(如`\x1b[A`) - **库封装**:高阶库(如Python的`pynput`)会屏蔽底层差异,直接提供语义化标识[^2] ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值