変数に格納したい 16 進値の長さは 32 です。この値も出力したいのですが、unsigned char の printf の書式指定子がわかりません。
2 に答える
これは 32文字の文字列で、16 進数です。つまり、16バイト、つまり 128ビットになります。
m0skit0 は、文字列に格納する方法を教えてくれました。実際にそれを整数に格納したい場合は、次のようなものが必要になりますunsigned long long intvar = strtoull( stringvar, NULL, 16 )
-マシンの「ロングロング」が128ビットを許容できる場合。
しかし、あなたが望んでいるのは、まったく別のものであり、それは、他の質問にリンクした後にのみ明らかになりました. (特に、実際に何をしているのか混乱している場合は、そのような文脈から何かを取り出すのは本当に悪いことです。)
API ドキュメントを見ると、見ているパラメーターがDES_cblock へのポインターであることがわかります。これは文字列ではなく、整数でもありません。その他の質問で、それらがどのように初期化されているかを見て、少し考えseed
てみてください。ivsetup
それはではありませんchar
。それは文字列です:
unsigned char* value = "DC4938C31B9E8B30F32FC0F5EC894E16";
printf("%s\n", value);
また、これが数値である場合、文字列は数値よりも低速でコーディングエラーが発生しやすいため、文字列または文字に変換することは強くお勧めしません。
16進数で表される数値(16進数ではなく、すべての数値は16進数であり、値の単なる表現です)には文字がありません。繰り返しますが、それは数字です。もちろん、(他の数値と同様に)文字列に変換することもできますが、そうするためには、強い理由が必要です(たとえば、使用するアルゴリズムは、数値よりも文字列の方が高速です)。
数字の表現について読むことをお勧めします。多くの新しいプログラマーは、このトピックに問題を抱えています。