2016-08-16 10 views
1

は、だから私は持っていると言う:Cでは、char []をエスケープされた16進数で出力する方法は?

char [] = "cat" 

私はそれがどのように見えるので、エスケープ進でそれを印刷したい:

"\x63\x61\x74" 

で新しいchar[]を構築/解析せずにこれを行う方法がありますエスケープされたヘックス?

+0

ここで[この回答を参照してください(http://stackoverflow.com/a/16519793/4520911)...別の注記で:_ "これを行う方法はありますかエスケープされた16進数で新しい 'char []'を構文解析/構築するのですか? "_ Hmm ...構文解析は、基本的には、何かをより小さな断片に分解し/解析することを意味します。それぞれの特定の文字を「解析する」ことなく、どのようにこのようなものを印刷すると思いますか? – iRove

答えて

1

あなたのprintfフォーマット文字列でxを使用することによってそれを行うことができます:あなたは新しいchar[]を構築する必要はありません

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

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

関連する問題