Qt数字转字符串

2进制,8进制,10进制,16进制无保留地转换字符串。

常用转换

  • 使用QString的number接口下列设置会被转换为10进制的字符串,显然不是我们想要的。
    1
    2
    3
    4
    QString::number(0b111); // "7"
    QString::number(0123); // "83"
    QString::number(123); // "123"
    QString::number(0x123); // "291"

保留进制的转换

  • number接口添加进制参数让它转换具备进制的字符串,但看起来像10进制的字符串,感觉也不是自己想要的。
    1
    2
    3
    4
    QString::number(0b111, 2);  // "111"
    QString::number(0123, 8); // "123"
    QString::number(123, 10); // "123"
    QString::number(0x123, 16); // "123"

更彻底的转换

  • “#”在宏中的作用为将”#“后的内容转换为字符串
  • 这样带进制标识的转换看起来好多了。
    1
    2
    3
    4
    5
    #define TO_STR(n) #n
    TO_STR(0b111); // "0b111"
    TO_STR(0123); // "0123"
    TO_STR(123); // "123"
    TO_STR(0x123); // "0x123"