我想输入一个文本字符串ffff
到int16_t
,值应该是-1
。
下面是一个简单的测试C++程序:
#include <iostream>
#include <iomanip>
#include <stdint.h>
int main() {
int16_t num;
std::cout << "Enter a hexadecimal number: ";
std::cin >> std::hex >> num;
std::cout << "Decimal representation: " << num << std::endl;
return 0;
}
下面是程序的结果:
Enter a hexadecimal number: ffff
Decimal representation: 32767
结果值32767
是int16_t
。
所以,我猜行std::cin >> std::hex >> num;
不支持十六进制格式的Two's complement表示法?
1条答案
按热度按时间lstz6jyr1#
此外,为了解决这个问题,您可以将num转换为uint16_t,然后在使用时将num转换为int16_t。