[英]Treat NULL as character in QByteArray
我正在使用QT4.8,我需要将一个数组发送到另一个包含一些0x00
值的设备。 但是,QByteArray将0x00
值视为字符串的结尾。 我想知道是否有可能实现我想要的目标。 这是我的测试代码:
zeroissue::zeroissue(QWidget *parent, Qt::WFlags flags)
: QMainWindow(parent, flags)
{
ui.setupUi(this);
unsigned char zero = 0x00;
QByteArray test;
test.append("this is a test");
test.append(zero);
test.append("test complete");
qDebug() << "test = " << test;
}
请建议我一种将0x00
视为QByteArray中的字符的方法。
我想知道是否有可能
是的。 从QByteArray的文档中 :
QByteArray可用于存储原始字节(包括'\\ 0')和传统的8位'\\ 0'终止的字符串。
以下main
功能按预期工作
int main(int argc, char** argv)
{
char null_char = '\0';
QByteArray test;
test.append("this is a test");
std::cout << "size(): " << test.size() << std::endl;
test.append(null_char);
std::cout << "size(): " << test.size() << std::endl;
test.append("test complete");
std::cout << "size(): " << test.size() << std::endl;
return 0;
}
并产生以下预期输出:
size(): 14
size(): 15
size(): 28
使用时
qDebug() << "test = " << test;
您应该在输出中看到嵌入的空字符。 有关其他详细信息,请参见https://doc.qt.io/qt-5/qdebug.html#operator-lt-lt-20 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.