【发布时间】:2016-07-05 02:01:52
【问题描述】:
int dd = 0xA5;
QByteArray p;
p.push_back (0xA5);
qDebug () << "SOP: " << (int)p[0];
这导致 -91 而 0xA5 代表十进制的 165。
如何将十六进制存储在QBytearray中,提取并转换为十进制?
【问题讨论】:
标签: c++ qt hex decimal qbytearray
int dd = 0xA5;
QByteArray p;
p.push_back (0xA5);
qDebug () << "SOP: " << (int)p[0];
这导致 -91 而 0xA5 代表十进制的 165。
如何将十六进制存储在QBytearray中,提取并转换为十进制?
【问题讨论】:
标签: c++ qt hex decimal qbytearray
-91 只是一个 char 值的表示。
char 的范围为--127..127。您正在存储值165,它大于127。
但是,unsigned char 的范围为 0..255。所以在这种情况下,您可以将您的值读取为unsigned char:
qDebug() << "SOP: " << (unsigned char)p[0];
另外你可以使用QString来显示对应的十六进制值:
QString hex = QString("%1").arg((unsigned char)p[0] , 0, 16);
qDebug() << "Hex: " << hex;
【讨论】: