将 NULL 视为 QByteArray 中的字符
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 中的字符的方法。
I wonder if it is even possible,
是的,是的。来自 QByteArray's documentation:
QByteArray can be used to store both raw bytes (including '[=15=]'s) and traditional 8-bit '[=15=]'-terminated strings.
以下 main
函数按预期工作
int main(int argc, char** argv)
{
char null_char = '[=10=]';
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。
我正在使用 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 中的字符的方法。
I wonder if it is even possible,
是的,是的。来自 QByteArray's documentation:
QByteArray can be used to store both raw bytes (including '[=15=]'s) and traditional 8-bit '[=15=]'-terminated strings.
以下 main
函数按预期工作
int main(int argc, char** argv)
{
char null_char = '[=10=]';
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。