は、だから私は持っていると言う:Cでは、char []をエスケープされた16進数で出力する方法は?
char [] = "cat"
私はそれがどのように見えるので、エスケープ進でそれを印刷したい:
"\x63\x61\x74"
で新しいchar[]
を構築/解析せずにこれを行う方法がありますエスケープされたヘックス?
は、だから私は持っていると言う:Cでは、char []をエスケープされた16進数で出力する方法は?
char [] = "cat"
私はそれがどのように見えるので、エスケープ進でそれを印刷したい:
"\x63\x61\x74"
で新しいchar[]
を構築/解析せずにこれを行う方法がありますエスケープされたヘックス?
あなたのprintf
フォーマット文字列でx
を使用することによってそれを行うことができます:あなたは新しいchar[]
を構築する必要はありません
for(i = 0; i < n; i++) {
printf("\\x%02x", (unsigned char)str[i]);
}
、printf
とのループが行います。
char c[] = "cat";
size_t len = strlen(c);
for (size_t i = 0 ; i != len ; i++) {
printf("\\x%02x", (unsigned char)c[i]);
}
マジックナンバーを使うのではなく、 '\ 0'をチェックすることです。結局のところ、それはC文字列です。 – Olaf
@ M.M固定。ありがとう! – dasblinkenlight
ここで[この回答を参照してください(http://stackoverflow.com/a/16519793/4520911)...別の注記で:_ "これを行う方法はありますかエスケープされた16進数で新しい 'char []'を構文解析/構築するのですか? "_ Hmm ...構文解析は、基本的には、何かをより小さな断片に分解し/解析することを意味します。それぞれの特定の文字を「解析する」ことなく、どのようにこのようなものを印刷すると思いますか? – iRove