在linux中,如何检查给定的输入是在uint8_t还是uint16_t或uint32_t?如何比较给定的输入?
答案 0 :(得分:0)
uint16_t value = boost::lexical_cast<uint16_t>(str);
如果无法转换输入字符串,它将抛出bad_cast异常。
答案 1 :(得分:0)
如果您的意思是输入从文件或控制台读取的数字,那么只需执行if语句:
#define max_uint8 (1<<8) - 1
#define max_uint16 (1<<16) - 1
#define max_uint32 (1<<32) - 1
if(input > max_uint32) {
// then it is greater than 32 bits
} else if (input > max_uint16) {
// then it is uint32
} else if (input > max_uint8) {
// then it is uint16
} else {
// then it is uint8
}
注意:我假设你的输入永远不会超过32位,否则你需要检查一下。