c++ - 将 NULL 视为 QByteArray 中的字符
问题描述
我正在使用 QT4.8,我需要将一个数组发送到另一个包含一些0x00
值的设备。但是,QByteArray 将0x00
value 视为字符串的末尾。我想知道这是否可能,我正在努力实现什么。这是我的测试代码:-
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。
推荐阅读
- spring - Spring Boot 无法启动 Web 服务器
- python-3.x - Zap API 中缺少参数用户名错误
- python - 如何在 Pandas DataFrame 中用某些值替换字符串?
- hive - 在 Hive 中查找一年的最大出现次数
- javascript - Javascript 排序字符串
- python - 如何将二合一列表理解语句
- r - 如何构建基于定义的列名升序或降序排名的排名函数?
- regex - 负前瞻匹配崇高文本3中的错误表达式
- javascript - React-native-camera 没有出现在屏幕上
- python - 如何使用 Python 和 openCV 从卫星图像创建 3D 地形模型?