在C中,如何将char []打印为转义十六进制?
问题描述:
所以说我有:在C中,如何将char []打印为转义十六进制?
char [] = "cat"
我想打印在逃脱六角所以它看起来像:
"\x63\x61\x74"
有没有办法做到这一点不解析/构造一个新char[]
与转义十六进制?
答
您可以通过在你的printf
格式字符串中使用x
做到这一点:
for(i = 0; i < n; i++) {
printf("\\x%02x", (unsigned char)str[i]);
}
答
你并不需要建立一个新的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]);
}
+1
而不是使用幻数,将检查'\ 0'。毕竟,这是一个C字符串。 – Olaf
+0
@ M.M固定。谢谢! – dasblinkenlight
请参阅[这个答案](http://stackoverflow.com/a/16519793/4520911)这里...在另一个说明:_“有没有办法做到这一点那么用这个转义的十六进制解析/构造一个新的'char []'?“嗯......解析基本上意味着将某些东西分解成小块/分析它。你如何期望在没有“解析”每个特定字符的情况下打印出来? – iRove