将 Hexdump 转换为 c 中的字符串

发布于 2024-10-12 07:55:14 字数 135 浏览 3 评论 0原文

有没有办法转换十六进制转储,例如 aec4d2f3c6a4e70ea6cea074f65812d2a34b180cc92b817edcd867167e7a91c5beb942f0 到c中的字符串,以便每两个十六进制数字组成一个字符?如果是这样,那又怎样?

Is there a way to convert a hexdump e.g. aec4d2f3c6a4e70ea6cea074f65812d2a34b180cc92b817edcd867167e7a91c5beb942f0
to a string in c so that every two hexadecimal digits make a char? If so, what?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

梓梦 2024-10-19 07:55:14

从标准输入读取并打印到标准输出:

int main() 
{
    int ch;
    while(scanf("%2x", &ch) == 1)
        putchar(ch);
}

我认为您可以根据您的特定源和目标要求轻松地自行修改它。

Reads from stdin and prints to stdout:

int main() 
{
    int ch;
    while(scanf("%2x", &ch) == 1)
        putchar(ch);
}

I think you can modify it easily yourself for your specific source and destination requirements.

噩梦成真你也成魔 2024-10-19 07:55:14

其中一种方法:

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;
}

One of the ways:

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;
}
怪我太投入 2024-10-19 07:55:14

重复使用 scanf 和 %hhx。请参阅man scanf

Use scanf with %hhx repeatedly. See man scanf.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文