BohYoh.comトップページへ
C & C++ FAQ
目次

C C++ char型の値を文字に依存しない一定桁数の16進数で表示する方法を教えてください。

 次のプログラムを考えましょう。
 

#include <stdio.h> int main(void) { int i; for (i = 0; i < 10; i++) printf("文字%cは16進数で%02Xです。\n", '0' + i, '0' + i); return (0); }

 このプログラムは、文字'0'~'9'の値を16進数の2桁で表示します。
 しかし、char型のビット数は処理系によって異なるため、2桁では不足するかもしれません。もしも文字'0'の値が255で、文字'1'の値が256であれば、前者は2桁でFFと表示されますが、後者は3桁で101と表示されることになります。
 文字によらず固定した桁数で表示するためには、<limits.h>ヘッダで定義されているCHAR_BITの値をうまく利用しなければなりません。
 プログラムは次のようになります。

#include <stdio.h> #include <limits.h> int main(void) { int i; for (i = 0; i < 10; i++) printf("文字%cは16進数で%0*Xです。\n", '0' + i, (CHAR_BIT + 3) / 4, '0' + i); return (0); }


■ 根拠 ■
標準C §5.2.4.2.1 Sizes of integral types <limits.h>
標準C99 §5.2.4.2.1 Sizes of integer types <limits.h>
標準C++ §18.2.2 C Library

■ 参照 ■
FAQ char型は何ビットですか。

戻る

BohYoh.comロゴ