在Qt中,将字符串转换为二进制数据可以通过以下几种方法实现,具体取决于输入字符串的格式和目标需求:
一、将十进制字符串转换为二进制数据
该函数支持直接将十进制整数转换为指定进制的字符串,包括二进制。示例如下:
```cpp
QString decimalStr = "100";
QString binaryStr = QString::number(decimalStr.toInt(), 2);
qDebug() << binaryStr; // 输出: 1100100
```
若需要固定长度(如8位),可补零:
```cpp
QString binaryStr = QString::number(decimalStr.toInt(), 2).right(8).leftPad(8, '0');
```
使用`QString::setNum()`函数
该函数可将整数转换为指定进制的字符串:
```cpp
QString decimalStr = "100";
int value = decimalStr.toInt();
QString binaryStr = QString::setNum(value, 2);
```
二、将十六进制字符串转换为二进制数据
使用`QString::number()`函数
支持直接转换:
```cpp
QString hexStr = "1A3F";
QString binaryStr = QString::number(hexStr.toInt(), 2);
qDebug() << binaryStr; // 输出: 1101000111111
```
若需要固定长度(如16位),可补零:
```cpp
QString binaryStr = QString::number(hexStr.toInt(), 2).right(16).leftPad(16, '0');
```
使用`QString::setNum()`函数
先转换为整数再转换:
```cpp
QString hexStr = "1A3F";
int value = hexStr.toInt(16);
QString binaryStr = QString::setNum(value, 2);
```
三、将二进制字符串转换为十进制整数
直接使用`toInt()`函数:
```cpp
QString binaryStr = "1100100";
int decimalValue = binaryStr.toInt(2);
```
四、注意事项
固定长度处理:
若目标二进制数据有固定长度(如8位、16位),建议使用`right()`和`leftPad()`方法补零。
转换失败时`toInt()`会返回0,建议结合`ok`参数判断转换是否成功。
对于大量数据转换,建议使用`QString::fromUtf8()`或`QString::fromStdString()`避免不必要的编码转换。
通过以上方法,可以灵活实现不同进制之间的转换,满足不同场景需求。