我打算制作一个这样的程序:
loop
read first character
read second character
make a two-digit hexadecimal number from the two characters
convert the hexadecimal number into decimal
display the ascii character corresponding to that number.
end loop
我遇到的问题是将两个字符转换为十六进制数,然后将其转换为十进制数。一旦我有一个十进制数字,我就可以显示ascii字符。
答案 0 :(得分:3)
除非您真的想自己编写转换,否则您可以使用[{1}}转换使用[f] scanf读取十六进制数字,或者您可以读取一个字符串,并转换为(一种可能性){{ 1}}。
如果您确实想自己进行转换,可以将单个数字转换为:
%x
答案 1 :(得分:2)
char a, b;
...read them in however you like e.g. getch()
// validation
if (!isxdigit(a) || !isxdigit(b))
fatal_error();
a = tolower(a);
b = tolower(b);
int a_digit_value = a >= 'a' ? (a - 'a' + 10) : a - '0';
int b_digit_value = b >= 'a' ? (b - 'a' + 10) : b - '0';
int value = a_digit_value * 0x10 + b_digit_value;
答案 2 :(得分:1)
将两个字符放入char数组中,将其终止,并使用'< stdlib.h>'中的strtol()
(docs)将其转换为整数。
char s[3];
s[0] = '2';
s[1] = 'a';
s[2] = '\0';
int i = strtol(s, null, 16);