我将无符号数组转换为带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] << " ";
输出X:65535,应为-1
答案 0 :(得分:3)
很可能是因为你的整数超过16位宽。 0x8000-0xffff
范围内的二进制补码数仅对16位数字为负。
对于32位(甚至64位)整数的更可能的情况(现在),它只是一个小的正数。