私はまだ質問を理解していません。おそらく、16 進数とは何かについて混乱しているからでしょう。コンピューター内部では、基数 2 (2 進数)、8 (8 進数)、10 (10 進数)、16 (16 進数) のいずれで数値を書き込んでも、ビットはまったく同じです。
では、16 という数字を取ります...これらはすべて同じです。
unsigned short pid = 0b10000; // binary (prefix with '0b' -- GCC only)
unsigned short pid = 020; // octal (prefix with '0')
unsigned short pid = 16; // decimal (no prefix)
unsigned short pid = 0x10; // hexadecimal (prefix with '0x')
ループするには、次のようにします。
for( int i = 0; i <= 0xffff; i++ ) {
printf( "%04x = %d\n", i, i );
}
(16 ビット整数)を使用する場合unsigned short
は、ループするときに注意する必要があります。上記の構造でan をループすると、インクリメント後にゼロに戻るunsigned short
ため、永遠にループします。0xffff
代わりにこれを行うことができます:
unsigned short i = 0;
do {
printf( "%04hx = %hu\n", i, i );
i++;
} while( i != 0 ); // Will become zero after completing 0xffff iteration.
とにかく、ポイントは、ある関数に数値を送るだけなら、16 進数、10 進数、またはその他のいずれで再生するかは問題ではないということです...それらはすべて同じです。出力する必要がある場合は、私のprintf
呼び出しを参照してください。