QByteArray frame = “AABB65700000CCDD”;frame 的第2第3字节为小端字节序,如何将这两个字节转化为数字25968
QByteArray frame = "AABB65700000CCDD";
// 提取第2和第3字节(索引1和2,因为索引从0开始)
quint8 lowByte = static_cast<quint8>(frame.at(1)); // 索引1,低位字节
quint8 highByte = static_cast<quint8>(frame.at(2)); // 索引2,高位字节
// 将这两个字节组合成一个16位整数(小端字节序)
quint16 value = (highByte << 8) | lowByte;
// 打印结果
qDebug() << "The 16-bit value (in little endian) is:" << value;
// 根据你的例子,这个值应该是 25968 (0x6570)
// 注意:这里假设你的环境是使用16位无符号整数(quint16)
// 如果需要转换为有符号整数,可以使用 qint16 并检查符号位
数字 25968
(即十六进制 0x6570
)如何变成小端字节序存储在QByteArray 中
quint16 value = 25968; // 十进制值
QByteArray byteArray;
// 将 16 位值以小端字节序存储到 QByteArray 中
byteArray.append(static_cast<char>(value & 0xFF)); // 低位字节
byteArray.append(static_cast<char>((value >> 8) & 0xFF)); // 高位字节
// 打印结果以验证
qDebug() << "The QByteArray content (hex):";
for (char byte : byteArray) {
qDebug() << std::hex << static_cast<unsigned int>(static_cast<unsigned char>(byte));
}