我有一个像这样的十六进制字符的char a[]
:
我想将其转换为与每个十六进制数字相对应的字母,如下所示:
68656c6c6f = hello
并将其存储在
char b[]
中,然后执行相反操作我不需要代码块,我想解释一下,使用了什么库以及如何使用它。
谢谢
最佳答案
这是实现此技巧的简单代码:
unsigned int hex_digit_value(char c)
{
if ('0' <= c && c <= '9') { return c - '0'; }
if ('a' <= c && c <= 'f') { return c + 10 - 'a'; }
if ('A' <= c && c <= 'F') { return c + 10 - 'A'; }
return -1;
}
std::string dehexify(std::string const & s)
{
std::string result(s.size() / 2);
for (std::size_t i = 0; i != s.size(); ++i)
{
result[i] = hex_digit_value(s[2 * i]) * 16
+ hex_digit_value(s[2 * i + 1]);
}
return result;
}
用法:
char const a[] = "12AB";
std::string s = dehexify(a);
注意:
std::string
用作方便的“字节容器”,这就是事实。 关于c++ - 将十六进制数字的char []转换为与ascii表中的十六进制数字相对应的字母的char []并将其反转,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13344134/