QT5.9.12 如何把一个中文,英文混合字符串输出到一个二进制文件里,要用Unicode ,英文为1byte, 中文为2byte,文件大小固定为1024byte,不够字节数补0,要求要用QTextStream方法,
时间: 2024-03-10 20:45:47 浏览: 17
可以使用以下代码将混合字符串输出到二进制文件:
```
#include <QFile>
#include <QTextStream>
void writeStringToBinaryFile(const QString& str, const QString& fileName)
{
QFile file(fileName);
if (!file.open(QIODevice::WriteOnly))
return;
// 字符串转为 Unicode 编码
QByteArray data = str.toUtf8();
// 计算需要写入的字节数
int bytesToWrite = qMin(data.size(), 1024);
// 填充字节数
if (bytesToWrite < 1024)
data = data.leftJustified(1024, '\0');
// 写入数据
QTextStream out(&file);
out.setCodec("UTF-16LE"); // 设置 Unicode 编码
for (int i = 0; i < bytesToWrite; i += 2)
{
ushort ch = (static_cast<uchar>(data.at(i + 1)) << 8) | static_cast<uchar>(data.at(i));
out << ch;
}
file.close();
}
```
使用方法:
```
QString str = "中文English";
writeStringToBinaryFile(str, "test.bin");
```
这段代码将会把字符串"中文English"写入到文件"test.bin"中,文件大小为1024字节,其中中文字符占用2个字节,英文字符占用1个字节。如果字符串长度不足1024字节,则会在末尾用'\0'补齐。