【问题标题】:In C, how to print char[] as escaped hex?在 C 中,如何将 char[] 打印为转义的十六进制?
【发布时间】:2016-12-22 06:49:15
【问题描述】:

所以说我有:

char [] = "cat"

我想用转义的十六进制打印它,所以它看起来像:

"\x63\x61\x74"

有没有办法在不使用转义十六进制解析/构造新的char[] 的情况下做到这一点?

【问题讨论】:

  • 在此处查看this answer...另一方面:“有没有办法在不使用转义十六进制解析/构造新的char[] 的情况下做到这一点?”嗯...解析基本上意味着将某些东西分解成更小的部分/分析它。您如何期望在不“解析”每个特定字符的情况下打印出这样的内容?

标签: c string char hex


【解决方案1】:

你不需要建立一个新的char[],一个带有printf的循环就可以了:

char c[] = "cat";
size_t len = strlen(c);
for (size_t i = 0 ; i != len ; i++) {
    printf("\\x%02x", (unsigned char)c[i]);
}

Demo.

【讨论】:

  • 不使用幻数,而是检查\0。毕竟是 C 字符串。
  • @M.M 已修复。谢谢!
【解决方案2】:

您可以通过在 printf 格式字符串中使用 x 来做到这一点:

for(i = 0; i < n; i++) {
    printf("\\x%02x", (unsigned char)str[i]);
}

【讨论】:

    猜你喜欢
    • 2015-02-14
    • 2010-10-14
    • 2012-09-02
    • 2012-04-09
    • 2014-09-18
    • 1970-01-01
    • 2013-05-07
    • 2019-09-04
    • 1970-01-01
    相关资源
    最近更新 更多