一个小小的疑问,求解答
这样一个简易测试程序,在VC6下运行:
[解决办法]
符号扩充呗. 0x9F 是一个负数, -97,
int 里面对应 -97 的数的十六进制就是 ffffff9f
[解决办法]
那就给他屏蔽掉
printf("%x %x\n",szTmp[0]&0xff,szTmp[1]&0xff);[解决办法]
#include <stdio.h>
int main(void)
{
char szTmp[5] = "\x9F\x36";
printf("%x %x\n",szTmp[0],szTmp[1]);
printf("%x %x\n",(unsigned char)szTmp[0],szTmp[1]);
return 0;
}
//ffffff9f 36
//9f 36
说明对于你的编译器: char其实是signed char