先看代码,其他啥也不说~~
struct MyParam
{
unsigned char byRegion;
unsigned char byGroup;
unsigned char byType;
unsigned char byIndex;
};
void main(void)
{
UINT dwID=1000;
char* pszID=new char[1000];
sprintf(pszID,"%d-%d-%d-%d",
((MyParam&)dwID).byRegion,
((MyParam&)dwID).byGroup,
((MyParam&)dwID).byType,
((MyParam&)dwID).byIndex);
cout<<pszID<<endl;
}
输出结果:
232 - 3 - 0 - 0
仔细想想,再分析一下:
1000: 00 00 03 E8 (16#)
UINT在WIN32占4个字节,这里强制转换成对一个结构体的引用。从低字节开始,于是可以猜测到结果了吧....