2016-08-16 32 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

相關問題