【问题标题】:How to convert from ASCII to Hex and vice versa? [closed]如何从 ASCII 转换为 Hex,反之亦然? [关闭]
【发布时间】:2010-07-09 13:08:59
【问题描述】:

我需要使用 C 程序将 ASCII 转换为 HEXHEX 转换为 ASCII
我该怎么做?

【问题讨论】:

  • 你的意思是ASCII字符到十六进制,例如“A”->“0x41”?或者评估字符串“0x41”?到目前为止,你走了多远?
  • ASCII 是字符集和编码,即 [0, 127] 中的整数到字符之间的双射映射。整数可以用十进制(例如 100)或十六进制(例如 0x64)表示。因此,在 ASCII 和十六进制之间进行转换是没有意义的。要么您有兴趣查找与字符对应的整数,要么您有兴趣在不同基数之间转换整数。
  • 如果您在阅读下面编写的链接/提示/伪代码/代码后将您的代码粘贴到这里会很好,以实现您的最终目标。

标签: c


【解决方案1】:

这是一个将一个字符转换为十六进制字符串的简单函数。

char hexDigit(unsigned n)
{
    if (n < 10) {
        return n + '0';
    } else {
        return (n - 10) + 'A';
    }
}

void charToHex(char c, char hex[3])
{
    hex[0] = hexDigit(c / 0x10);
    hex[1] = hexDigit(c % 0x10);
    hex[2] = '\0';
}

【讨论】:

  • 请注意,C 标准不保证字母的值是连续的。 (它确实保证了数字。)更简单:"0123456789ABCDEF"[n]
【解决方案2】:

这很容易。逐个字符扫描……最好从头开始。如果字符是介于 0 和 9 之间的数字或介于 a 和 f 之间的字母,则通过将其左移您目前找到的位数将其放置在正确的位置。

对于转换为字符串,您可以执行类似的操作,但首先您屏蔽并右移值。然后将它们转换为字符并将它们放入字符串中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-11-15
    • 2019-10-18
    • 2020-10-24
    • 2014-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多