从具有可选基数的字符串中解析数字
Parse number from string with optional base
如何从字符串中解析 0x345
、23423
、0172
(可能还有 0b001111
)等数字?
我找到了常规的 QString::toXXX
函数,但它们采用基数参数,但我希望以 C 编译器会做的方式从字符串中确定基数。
我认为 Qt 中一定存在一些东西。但我只发现了上面提到的或其他明确采用基础的方法(例如作为流操纵器)。
提前致谢。
事实证明,您只想对二进制数执行此操作。
您必须通过以下任一方式手动检测碱基(通过读取前缀):
- 使用
QString::left
,或
- 使用正则表达式
然后用那个基地做QString:toXXX
。
QString::toXXX
做你想做的(二进制表示除外):
If base is 0, the C language convention is used: If the string begins with "0x", base 16 is used; if the string begins with "0", base 8 is used; otherwise, base 10 is used.
所以只需使用 int i = s.toInt(NULL, 0);
如何从字符串中解析 0x345
、23423
、0172
(可能还有 0b001111
)等数字?
我找到了常规的 QString::toXXX
函数,但它们采用基数参数,但我希望以 C 编译器会做的方式从字符串中确定基数。
我认为 Qt 中一定存在一些东西。但我只发现了上面提到的或其他明确采用基础的方法(例如作为流操纵器)。
提前致谢。
事实证明,您只想对二进制数执行此操作。
您必须通过以下任一方式手动检测碱基(通过读取前缀):
- 使用
QString::left
,或 - 使用正则表达式
然后用那个基地做QString:toXXX
。
QString::toXXX
做你想做的(二进制表示除外):
If base is 0, the C language convention is used: If the string begins with "0x", base 16 is used; if the string begins with "0", base 8 is used; otherwise, base 10 is used.
所以只需使用 int i = s.toInt(NULL, 0);