【发布时间】:2014-08-07 23:28:37
【问题描述】:
我不确定我是否了解 QByteArray 对象的工作原理(它是原始 char 数据,对吗?),但这是我的困境:
我正在尝试从函数中的 UDP 数据报访问数据。代码:
QByteArray buffer;
buffer.resize(udpSocket->pendingDatagramSize());
QHostAddress sender;
quint16 senderPort;
udpSocket->readDatagram(buffer.data(), buffer.size(), &sender, &senderPort);
这为其他传入数据释放缓冲区,并允许我处理我当前的数据报。
据我所知,我必须将数据存储在 QByteArray 中,因为任何其他尝试都会使编译器与我产生矛盾。无论如何,存储在 QByteArray 中的数据是我需要访问的一系列无符号 16 位值(命令)。是否可以直接从 QByteArray 中读取,如果可以,如何读取?我没有运气这样做。如果没有,将整个数组转换为 quint16 数组以便我可以处理传入数据的最佳方法是什么?谢谢大家!!
【问题讨论】:
-
QByteArray是一个字节数组。要转换为 16 位无符号整数值,您必须从buffer获取两个相邻字节,如果发送方使用大端系统,则使用buffer[n]*0xFF+buffer[n+1]。如果是 little-endian 系统,请更改顺序。
标签: c++ c qt qbytearray