我正在用c ++编写一个用于pst提取的程序。
我想检查所有可能的prop_ids,我想到的最佳方法是循环使用它们。在c ++中,我可以通过调用
来声明prop_idprop_id = 0x0000
我想增加0000的这一面。这个prop_id期望一个十六进制数。我怎样才能增加0000的值。我试过了
prop_id pid = 0x000;
接下来是pid ++,但这似乎返回了一个长度为8位的十六进制。
答案 0 :(得分:1)
我仍然不明白这个问题。也许是因为你对十六进制数是多么困惑。在计算机内部,无论我们以基数2(二进制),8(八进制),10(十进制)还是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 );
}
如果使用unsigned short
(16位整数),循环时需要小心。如果使用上面的构造循环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.
无论如何,关键在于,如果你只是向某个函数发送数字,那么你用它们作为十六进制,十进制或其他任何东西都无关紧要......它们都是一样的。如果您需要输出,请参阅我的printf
来电。