![cover](https://img-blog.csdnimg.cn/84ed08c2e49849158da37fcb4af6b525.jpeg)
Qt中将quint16转换为QByteArray的方法
Qt中将quint16转换为QByteArray的方法
问题背景:
今天在改进用Qt写的TCP服务器和客户端代码时,想将服务器tcpServer的端口号作为数据发送给客户端,并且需要转为Utf8格式。遇到一个问题,调用TcpSocket中的write(const QByteArray &data)方法,write方法的参数列表中需要填入的参数类型是QByteArray,但tcpServer的serverPort()是一个quint16类型。
问了一下chatGPT,给出的方案是,先将quint转为QTextCodec再转为QByteArray。但我使用的Qt版本是Qt6,已经弃用了QTextCodec。
问题思考和解决方法:
需要解决上述问题,那么就需要将quint16转为QByteArray类型,想法是:首先调用QString的number(int num)方法,将quint16转为QSting,再调用QByteArray的toUtf8()将QString转为QByteArray。
具体代码:
quint16 input = this->tcpServer->serverPort();
QString str = QString::number(input); //一定要用number转化 不然乱码
QByteArray bytes = str.toUtf8();
上述代码为了写成一行放在tcpSocket的write方法的参数列表里,改成
QByteArray(QString::number(this->tcpServer->serverPort()).toUtf8())
具体为:
tmpTcpSocket->write(QByteArray(QString::number(this->tcpServer->serverPort()).toUtf8()) + " : " + ui.sendEdit->text().toUtf8());
更多推荐
所有评论(0)