String 从\0清除QByteArray

String 从\0清除QByteArray,string,qt,bytearray,String,Qt,Bytearray,在我的应用程序中,我使用QByteArray将二进制数据从文件读取到固定大小的字节记录。实际上,所有这些记录都是字符串。如果字符串大小小于记录大小,则剩余字节将填充\0。有时记录也可以以\0开头 例如,我需要做的是: 以前 \0 \0 \0 T h e \32 s t r i n g \0 \0 \0 之后 所以我的问题是-如何从所有\0中清理QByteArray。我测试了这段代码,由于QByteArray&QByteArray::replace(…)函数,它似乎能正常工作 QByteArra

在我的应用程序中,我使用
QByteArray
将二进制数据从文件读取到固定大小的字节记录。实际上,所有这些记录都是字符串。如果字符串大小小于记录大小,则剩余字节将填充\0。有时记录也可以以\0开头

例如,我需要做的是:

以前

\0 \0 \0 T h e \32 s t r i n g \0 \0 \0
之后


所以我的问题是-如何从所有\0中清理
QByteArray

我测试了这段代码,由于
QByteArray&QByteArray::replace(…)
函数,它似乎能正常工作

QByteArray array;
array[0] = '\0';
array[1] = 'a';
array[2] = '\0';
array[3] = 'b';
array[4] = '\0';

qDebug() << "string:" << QString(array.toHex());
array.replace('\0',"");

qDebug() << "string:" << QString(array.toHex());
QByteArray array;
array[0] = '\0';
array[1] = 'a';
array[2] = '\0';
array[3] = 'b';
array[4] = '\0';

qDebug() << "string:" << QString(array.toHex());
array.replace('\0',"");

qDebug() << "string:" << QString(array.toHex());
string: "0061006200" 
string: "6162"