を使用して16進数を文字列に配置できることを理解しています\x
。たとえば、0x41 0x42
として文字列に配置できます"\x41\x42"
。
char * ptr = "\x41\x42" ;
printf( "%s\n" , ptr ) // AB
\x
は破棄41
され、コンパイラーによって16進と見なされます。
しかし、コマンドライン引数を使用してプログラムに渡すと、機能しません。
// test.c
main( int argc , char * argv[] )
{
printf( "%s\n" , argv[1] ) ;
}
$ gcc -o prog test.c
$ ./prog "\ x41 \ x42"
\ x41 \ x42
$ .prog \ x41 \ x42
\ x41 \ x42
私が期待AB
したのは例1のようなものでした。
なぜそうなのですか?コマンドライン引数の場合、なぜこの表現方法が機能しないのですか?16進文字列が16進数値に変換できることが確実にわかっている
値を(最初の例のように解析せずに)どのように変換できますか?argv[1]
御時間ありがとうございます。