有没有办法将十六进制转储例如 aec4d2f3c6a4e70ea6cea074f65812d2a34b180cc92b817edcd867167e7a91c5beb942f0 转换为 c 中的字符串,以便每两个十六进制数字生成一个字符?如果是这样,是什么?
问问题
1924 次
3 回答
4
从标准输入读取并打印到标准输出:
int main()
{
int ch;
while(scanf("%2x", &ch) == 1)
putchar(ch);
}
我认为您可以根据自己的特定源和目标要求轻松修改它。
于 2011-01-15T16:47:09.010 回答
3
方法之一:
size_t unBytes = strHex.size() / 2;
std::string strResult(unBytes, 0);
for (size_t i = 0; i < unBytes; ++i)
{
std::istringstream in(strHex.substr(2*i, 2));
int byte = 0;
in >> std::hex >> byte;
strResult[i] = byte;
}
于 2011-01-15T16:49:27.577 回答
0
%hhx
反复使用 scanf 。见man scanf
。
于 2011-01-15T16:48:52.557 回答