簡體   English   中英

將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中的字符的方法。

我想知道是否有可能

是的。 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM