QT 中 TCP 套接字上的 0x00 十六进制

0x00 hex over TCP socket in QT

我在通过 tcp 发送 0x00 时遇到问题。 0x01 之类的数据正常,服务器接收为 00000001,但是什么时候是 0x00 - 服务器上没有接收到消息。

客户代码:

QByteArray sender="\x00";
socket.write(sender);

服务器代码:

    QByteArray Data = socket->readAll();
    QString str = QString(Data.toHex());
    qDebug()<<str;

    //disp bytes
    char myByte = Data.at(0);

    for (int i = 7; i >= 0; --i) 
    {
        qDebug() << ((myByte >> i) & 1);
    }

如何发送十六进制的 0x00?

您正在从字符串构造 QByteArray,但字符串以字符 0 终止。因此您的数组为空。

使用different constructor,即

const QByteArray sender(1, '[=10=]');