我正在用 c++ 编写一个用于 pst 提取的程序。
我想检查所有可能的 prop_ids,我能想到的最好的方法是遍历它们。prop_id
在 c++ 中,我可以通过调用来声明 a
prop_id = 0x0000
我想增加这方面的 0000 。这prop_id
需要一个十六进制数。我怎样才能增加0000的价值。我试过了
prop_id pid = 0x000;
紧随其后的是 pid++ 但这似乎返回了一个 8 位长的十六进制数。
我还是不明白这个问题。也许是因为您对什么是十六进制数字感到困惑。在计算机内部,无论我们以 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
用上面的结构循环 a ,它将永远循环,因为在递增后0xffff
它会回绕回零。你可以这样做:
unsigned short i = 0;
do {
printf( "%04hx = %hu\n", i, i );
i++;
} while( i != 0 ); // Will become zero after completing 0xffff iteration.
无论如何,关键是,如果您只是将数字发送到某个函数,那么无论您将它们作为十六进制、十进制还是其他任何方式都没有关系......它们都是一样的。如果您需要输出它,请参阅我的printf
电话。