をprintf()
と使用する場合、スタックから4バイト(16進数でint
)を印刷しています。しかし、私は1バイトしか印刷しません。これを行う方法はありますか?printfで1バイトを印刷する方法は?
答えて
の定義されていない動作を回避するには、どのように注意する必要がありますかp[0]
とp[1]
が広いタイプ(int
)に変換されていることを
int main()
{
int foo = 2;
unsigned char* p = (unsigned char*)&foo;
printf("%x", p[0]); // outputs the first byte of `foo`
printf("%x", p[1]); // outputs the second byte of `foo`
}
注:
C標準は、あなたがしてポインタ演算を使用して、必要なバイトを印刷unsigned char
にint
をキャストすることができます、出力を表示する前に。
ニース。セマフォを一緒にマッシュしないでください。まれな 'sizeof(int)== 1'では角の問題だけがあります。 printf( "%x \ n"、p [i]); '(size_t i = 0; i
大きな値の型の1バイトを印刷する場合は、必要な値(たとえば、int x = 0x12345678; x & 0x00FF0000 >> 16)をマスクまたはシフトアウトすることができます。または、(符号なし)charポインタを使用して必要なバイト位置をキャストし、オフセットを使用して必要なバイトを取得するだけです。
仮定:1バイト幅の変数の値、つまりchar
を出力したいとします。あなたがchar
変数を持っている場合は
は、char x = 0;
を言うと、値を印刷printf()
で%hhx
書式指定子を使用します。
printf("%hhx", x);
ような何かにそれ以外の場合は、printf()
は、スタックから値をsizeof(unsigned int)
を読んでいないだろうとにより、デフォルトの引数のプロモーションに、
printf("%x", x);
のような文はまた、正しいだろうx
はそのタイプに基づいて読み取られ、とにかに必要なタイプに昇格されます。
- 1. Pythonで0xffバイトを印刷する方法は?
- 2. LLVM-IRからprintfの引数名を印刷する方法
- 3. C printf乱数を印刷する
- 4. バイト配列を次のように印刷する方法
- 5. printf( "%。17g \ n"、.1)はどうすれば印刷できますか?
- 6. 2行プログラムでフォークした後にprintfを1回だけ印刷する
- 7. 1行に1文字ずつ印刷する方法は?
- 8. バイトのシーケンスを印刷
- 9. ループ内の1行で印刷する方法は?
- 10. c printfきれいな印刷書式
- 11. Yacc/Bison:擬似変数($$、$ 1、$ 2、..)とprintfを使用してそれらを印刷する方法
- 12. 各印刷ページでGridViewのヘッダーを印刷する方法
- 13. IndexListProperty()をインデックス[1]から印刷する方法は?
- 14. jsonを使用してバイト配列で画像を印刷する方法
- 15. バイトを2桁の16進数文字として印刷する方法は?
- 16. Groovyでは、メソッドcity()は印刷メソッドなしで印刷する方法
- 17. printDocument.print()での印刷ダイアログをスキップし、ページを直接印刷する方法は?
- 18. Windowsシステムで印刷ダイアログをスキップし、ページを直接印刷する方法は?
- 19. テンソルを印刷する方法は?
- 20. 印刷1
- 21. ダブルをカンマで印刷する方法
- 22. GTKSharpでイメージを印刷する方法
- 23. androidでメールを印刷する方法
- 24. 各行の値をPHP codeigniterで1つ1つずつ印刷する方法
- 25. WebViewの印刷方法は?
- 26. ディレクトリツリーの印刷方法は?
- 27. mysql_num_rowsの印刷方法は?
- 28. アレイの印刷方法は?
- 29. 印刷方法*キューブ
- 30. javacriptで印刷する印刷領域を分割する方法
言語にタグを付ける必要があります。これはCですか? – Bathsheba
あなたの前提は正しくありません。 'printf("%x "、x)'は 'x'の値を16進形式で表示します。 'x'のサイズは'(int) '型とみなされますが、必ずしも4バイトであるとは限りません。 – giusti
Cタグを追加しました。私は*私の答えは正しいと思う、そうでなければdownvoteしてください。 – Bathsheba