c - 如何在 C 中将十六进制数转换为 Ascii 码

标签 c ascii hex

我打算做一个这样的程序:

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 字符。

最佳答案

除非你真的想自己编写转换,否则你可以使用 [f]scanf 使用 %x 转换读取十六进制数,或者你可以读取一个字符串,然后使用 (for one可能性)strtol

如果您确实想自己进行转换,可以像这样转换单个数字:

if (ixdigit(ch))
    if (isdigit(ch))
        value = (16 * value) + (ch - '0');
    else
        value = (16 * value) + (tolower(ch) - 'a' + 10);
else
    fprintf(stderr, "%c is not a valid hex digit", ch);

关于c - 如何在 C 中将十六进制数转换为 Ascii 码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5087823/

相关文章:

string - 如何使用 MATLAB 计算拼字游戏中的单词分数

c++ - 有没有支持任意位置位操作的高性能C/C++库?

即使 IF 语句为 false,字符指针数组也会被覆盖

Javascript\x 转义

Java:十六进制格式的 EpochSecond

c# - 替换文件中的字节

c++ - 在 C++ 中覆盖备用字节对

c - tasklet_action()函数中为什么会调用BUG?

c++ - 使用 linux 自动工具

php - 检测字符串是否包含 "Letter with Tilde"或 "Letter + Combining Tilde"