3

関数でunsignedcharを必要とする暗号化に取り組んでいますが、復号化後に使用するためにcharに変換したいと考えています。ので、私は持っています:

unsigned char plaintext[16];
char *plainchar;
int plainint;

... Code now populates plaintext with data that happens to all be plain text

この時点で、平文が実際には「0123456789」のデータ文字列であるとしましょう。どうすれば平文の値を「012456789」としてplaincharに取得し、同時に123456789としてplainintを取得できますか?

- 編集 -

平文が「AAAAAAAAAA105450」と等しい場合にこれを行う:

unsigned char plaintext[16];
char *plainchar;
int plainint;

... Code now populates plaintext with data that happens to all be plain text

plainchar = (char*)plaintext;

plaincharを"AAAAAAAAAA105450╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠ codeはrijndaelのサンプルコードであるため、正常に機能しているはずです。

ありがとう、ベン

4

3 に答える 3

5

プレーンテキストの文字列は終了しません。すべての文字列には、文字列の終わりを示す追加の文字が必要です。このキャラクターは'\0'です。

plaintext変数を次のように宣言します

unsigned char plaintext[17];

復号化が完了したら、これを追加します

plaintext[last_pos] = '\0';

last_pos復号化されたテキストの最後の位置に変更します。デフォルトは16(配列の最後のインデックス)です。

于 2012-09-24T06:03:03.907 に答える
1

単純に

plainchar = (char*)plaintext;
sscanf( plainchar, "%d", &plainint );
于 2012-09-24T02:14:04.390 に答える
1

unsignedcharからcharへの*

plainchar = (char*)plaintext;

unsignedtointの場合

sscanf( plainchar, "%d", &plainint );
于 2012-09-24T02:35:35.767 に答える