关于int(short)向unsigned char类型转换问题请教。
在int向unsigned char转换过程中遇到一个问题,向各位请教。
代码:
short x=0x00c3;//为了描述方便,用十六进制表示.195
unsigned char *tmp=(unsigned char*)&x;
for (uint y=0;y<sizeof(short);++y)
{
cout<<*(tmp+y)<<endl;
}
*(tmp+y)所得到的值总是为0
但是如果
short x=0x01c3;
那么*(tmp+1)可以得到01.
再令
short x=0x01ff.
那么*tmp=ff,*(tmp+1)=01
结果就是正确的。
也就是说,short中的最低字节如果不是ff,转换以后都变成了00.
winxp vs.net
请问这是为什么,如何才能将int/short按字节转换为unsigned char?
请各位高手指点,谢谢。