1

pst 抽出用に c++ でプログラムを作成しています。

考えられるすべての prop_ids を確認したいのですが、これについて考えられる最善の方法は、それらをループすることです。prop_idC ++では、呼び出すだけでaを宣言できます

prop_id = 0x0000

これの0000側を増やしたい。これprop_idには 16 進数が必要です。0000 の値を増やすにはどうすればよいですか。

prop_id pid = 0x000; 

pid++ が続きますが、これは 8 桁の長さの 16 進数を返すようです。

4

1 に答える 1

2

私はまだ質問を理解していません。おそらく、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呼び出しを参照してください。

于 2012-10-26T20:25:17.610 に答える