0

有没有办法将十六进制转储例如 aec4d2f3c6a4e70ea6cea074f65812d2a34b180cc92b817edcd867167e7a91c5beb942f0 转换为 c 中的字符串,以便每两个十六进制数字生成一个字符?如果是这样,是什么?

4

3 回答 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 回答