有没有办法获取ascii值的名称。
例如
0x08或只是8是退格
我可以在c或c ++中获得名称“Backspace”吗?
答案 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;
}