我遇到了一个非常奇怪的问题。我想我在这里遗漏了一些非常基本的东西。当我这样做时:
char buffer[1] = {0xA0};
int value=0;
value = (int)buffer[0];
printf("Array : %d\n",value);
我得到结果为-96,这不应该发生。它应该给我160,因为十六进制数0xA0表示十进制160。当我在缓冲区(如0x1F)中放入小值时,它可以正常工作。 谁能告诉我我在这里失踪了什么?
答案 0 :(得分:5)
char
已签署-128至127
将buffer
声明为unsigned char
或投放到unsigned char
:
char buffer[1] = {0xA0};
int value=0;
value = (unsigned char)buffer[0];
printf("Array : %d\n",value);