我正在使用 sscanf
函数将无符号数组转换为整数,但我得到的是无符号数??
int arr[3];
unsigned char* tmp = "1223FFFF2222;
for (int i = 0; i < 3; i++){
sscanf((const char*)tmp, "%4x", &arr[i]);
tmp += 4;
}
std::cout << "X: " << std::dec << arr[1] << " ";
OUTPUT X: 65535 , 应该是-1
最佳答案
很可能是因为您的整数超过 16 位宽。 0x8000-0xffff
范围内的二进制补码对于 16 位数字只会是负数。
对于 32 位(甚至 64 位)整数的更可能情况(现在),它只是一个很小的正数。
关于c++ - 为什么输出显示为无符号数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33081427/