Ascii的价值名称

时间:2013-11-05 09:31:43

标签: c++ c ascii

有没有办法获取ascii值的名称。

例如

0x08或只是8是退格

我可以在c或c ++中获得名称“Backspace”吗?

4 个答案:

答案 0 :(得分:1)

简而言之,没有。但是很容易解决。

如果您的ASCII码是< 32,这里是您可以使用的标准ASCII控制字符缩写表:

char *ascii_cc[] = {
  "NUL", "SOH", "STX", "ETX", "EOT", "ENQ", "ACK", "BEL", 
  "BS",  "HT",  "LF",  "VT",  "FF",  "CR",  "SO",  "SI",
  "DLE", "DC1", "DC2", "DC3", "DC4", "NAK", "SYN", "ETB",
  "CAN", "EM",  "SUB", "ESC", "FS",  "GS",  "RS",  "US" };

然后根据您感兴趣的char的值索引该字符串数组。例如

char c = 8; /* backspace */
printf("ASCII control code = %s\n", ascii_cc[c]);

答案 1 :(得分:0)

只有128个(最后128个不同,具体取决于您使用的代码页),为什么不创建const数组?如果将数据范围缩小到不可打印的字符,则项目数将降至32。

您可以在Wikipedia上找到完整列表。

以下是前32个值:

Dec    Abbr    Name
0      NUL     Null character
1      SOH     Start of Header
2      STX     Start of Text
3      ETX     End of Text
4      EOT     End of Transmission
5      ENQ     Enquiry
6      ACK     Acknowledgment
7      BEL     Bell
8      BS      Backspace[d][e]
9      HT      Horizontal Tab[f]
10     LF      Line feed
11     VT      Vertical Tab
12     FF      Form feed
13     CR      Carriage return[g]
14     SO      Shift Out
15     SI      Shift In
16     DLE     Data Link Escape
17     DC1     Device Control 1 (oft. XON)
18     DC2     Device Control 2
19     DC3     Device Control 3 (oft. XOFF)
20     DC4     Device Control 4
21     NAK     Negative Acknowledgement
22     SYN     Synchronous idle
23     ETB     End of Transmission Block
24     CAN     Cancel
25     EM      End of Medium
26     SUB     Substitute
27     ESC     Escape[i]
28     FS      File Separator
29     GS      Group Separator
30     RS      Record Separator
31     US      Unit Separator

答案 2 :(得分:0)

标准中无法做到这一点,我不知道第三方库能够做到这一点。您最好的选择是创建一个包含您自己的映射的表。您只需创建一些特殊映射,因为大多数字符都以它们的显示方式调用。

答案 3 :(得分:0)

man ASCII可以提供帮助:

#include <stdio.h>
#include <string.h>

FILE *popen(const char *command, const char *mode);
int pclose(FILE *stream);

int main(void)
{
    FILE *cmd = popen("man ASCII", "r");
    char *key = "010";
    char result[128];

    while (fgets(result, sizeof(result), cmd) != NULL)
        if (strstr(result, key))
            printf("key %s: %s", key, result);
    pclose(cmd);
    return 0;
}