-3

在 linux 中,如何检查给定的输入是 uint8_t 还是 uint16_t 还是 uint32_t?如何将给定的输入与它们进行比较?

4

2 回答 2

0
uint16_t value = boost::lexical_cast<uint16_t>(str);

如果无法转换输入字符串,它将抛出 bad_cast 异常。

于 2012-04-21T13:03:34.723 回答
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 位,否则你需要检查这个。

于 2012-04-21T13:08:02.933 回答