の例では、進バイトの各プリントアウトするために、私は、私が反復処理したい進データとCプログラムのコードを持っています。しかしC印刷進バイト
char input[] = "\x31\xd2\xb2\x30";
for (int i = 0; i < strlen(input); i++) {
printf("%02X\n", input[i]);
}
は、出力は私何ではありません例えば上記印刷、期待:
31
FFFFFFD2
FFFFFFB2
30
Iはまた、しかし、私は同じ出力を受け取り、(unsigned int)
として出力をキャストすることを試みました。
誰かがこの簡単なスクリプトで問題を指摘できますか?
システムでは、 'char'はおそらく' signed'です。したがって、データ '\ xd2'は負の値です。その値を 'printf'に渡すと、署名された' int'に昇格します。しかし、フォーマット指定子 '%X'は' unsigned int'を期待しており、それに応じてバイナリデータを解釈します。 *未定義の動作*です。 –