-6

変数に格納したい 16 進値の長さは 32 です。この値も出力したいのですが、unsigned char の printf の書式指定子がわかりません。

4

2 に答える 2

2

これは 32文字の文字列で、16 進数です。つまり、16バイト、つまり 128ビットになります。

m0skit0 は、文字列に格納する方法を教えてくれました。実際にそれを整数に格納したい場合は、次のようなものが必要になりますunsigned long long intvar = strtoull( stringvar, NULL, 16 )-マシンの「ロングロング」が128ビットを許容できる場合。

しかし、あなたが望んでいるのは、まったく別のものであり、それは、他の質問にリンクした後にのみ明らかになりました. (特に、実際に何をしているのか混乱している場合は、そのような文脈から何かを取り出すのは本当に悪いことです。)

API ドキュメントを見ると、見ているパラメーターがDES_cblock へのポインターであることがわかります。これは文字列ではなく、整数でもありません。その他の質問で、それらがどのように初期化されているかを見て、少し考えseedてください。ivsetup

于 2012-05-14T15:44:47.947 に答える
1

それはではありませんchar。それは文字列です:

unsigned char* value = "DC4938C31B9E8B30F32FC0F5EC894E16";
printf("%s\n", value);

また、これが数値である場合、文字列は数値よりも低速でコーディングエラーが発生しやすいため、文字列または文字に変換することは強くお勧めしません。

16進数で表される数値(16進数ではなく、すべての数値は16進数であり、値の単なる表現です)には文字がありません。繰り返しますが、それは数字です。もちろん、(他の数値と同様に)文字列に変換することもできますが、そうするためには、強い理由が必要です(たとえば、使用するアルゴリズムは、数値よりも文字列の方が高速です)。

数字の表現について読むことをお勧めします。多くの新しいプログラマーは、このトピックに問題を抱えています。

于 2012-05-14T15:41:48.920 に答える