1

我正在用 c++ 编写一个用于 pst 提取的程序。

我想检查所有可能的 prop_ids,我能想到的最好的方法是遍历它们。prop_id在 c++ 中,我可以通过调用来声明 a

prop_id = 0x0000

我想增加这方面的 0000 。这prop_id需要一个十六进制数。我怎样才能增加0000的价值。我试过了

prop_id pid = 0x000; 

紧随其后的是 pid++ 但这似乎返回了一个 8 位长的十六进制数。

4

1 回答 1

2

我还是不明白这个问题。也许是因为您对什么是十六进制数字感到困惑。在计算机内部,无论我们以 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电话。

于 2012-10-26T20:25:17.610 回答