-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 に答える