Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我遇到了一个非常奇怪的问题。我想我在这里遗漏了一些非常基本的东西。当我这样做时:
char buffer[1] = {0xA0}; int value=0; value = (int)buffer[0]; printf("Array : %d\n",value);
我得到的结果为-96,这不应该发生。它应该给我 160,因为十六进制数 0xA0 表示十进制的 160。当我将小值放入像 0x1F 这样的缓冲区时,它工作正常。谁能告诉我我在这里错过了什么?
char签名 -128 到 127
char
声明buffer为unsigned char或强制转换为unsigned char:
buffer
unsigned char
char buffer[1] = {0xA0}; int value=0; value = (unsigned char)buffer[0]; printf("Array : %d\n",value);