循环通过十六进制/prop_id值 我正在编写一个C++程序,用于PST抽取。p>

循环通过十六进制/prop_id值 我正在编写一个C++程序,用于PST抽取。p>,c++,hex,C++,Hex,我想检查所有可能的prop_id,我能想到的最好的方法就是循环检查它们。在C++中,我可以通过调用< /p>来声明 PROPIDID > prop_id = 0x0000 我想增加这一方面。此prop_id需要一个十六进制数。如何增加0000的值。我刚试过 prop_id pid = 0x000; 跟在pid++后面,但这似乎返回一个十六进制8位长。我仍然不理解这个问题。也许是因为你对什么是十六进制数感到困惑。在计算机内部,无论我们用基数2(二进制)、8(八进制)、10(十进制)或16(

我想检查所有可能的prop_id,我能想到的最好的方法就是循环检查它们。在C++中,我可以通过调用< /p>来声明<代码> PROPIDID <代码> >
prop_id = 0x0000
我想增加这一方面。此
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 );
}

不管怎么说,关键是如果你只是把数字发送给某个函数,不管你是把它们当作十六进制、十进制还是别的什么来处理。。。他们都一样。如果您需要输出它,请参阅我的
printf
调用。

听起来您有32位整数,您希望它们的行为与16位相同。这不一定是个问题,但你的解释不清楚。精确显示递增时的期望值,以及如何确定数字的“长度”。我的意思是,你正在把它打印到屏幕/文件上吗?您正在查看内存内容吗?当我递增时,我期望0x0000(分钟)。。0x00A3。。0xFFFF(最大值)。有了这些数据,我将尝试访问mapi pst属性。例如,我可以使用0x3456,但我想通过循环所有可能的十六进制值来查看是否缺少mapi属性。上面是我期望的增量的一个小示例。0x0001 0x0002等
unsigned short i = 0;
do {
    printf( "%04hx = %hu\n", i, i );
    i++;
} while( i != 0 );  // Will become zero after completing 0xffff iteration.