2016-08-16 83 views
1

所以说我有:在C中,如何将char []打印为转义十六进制?

char [] = "cat" 

我想打印在逃脱六角所以它看起来像:

"\x63\x61\x74" 

有没有办法做到这一点不解析/构造一个新char[]与转义十六进制?

+0

请参阅[这个答案](http://stackoverflow.com/a/16519793/4520911)这里...在另一个说明:_“有没有办法做到这一点那么用这个转义的十六进制解析/构造一个新的'char []'?“嗯......解析基本上意味着将某些东西分解成小块/分析它。你如何期望在没有“解析”每个特定字符的情况下打印出来? – iRove

回答

1

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

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

你并不需要建立一个新的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.

+1

而不是使用幻数,将检查'\ 0'。毕竟,这是一个C字符串。 – Olaf

+0

@ M.M固定。谢谢! – dasblinkenlight