如何将"\"
中这些QByteArray
个分隔的HEX值解析为8个单独的int?
QByteArray mainArray = "\xFF\xFF\x01\x04\x01\x0B\x03\xEC";
int num1;
int num2;
int num3;
...
答案 0 :(得分:0)
\x
escape sequence表示字符串文字和字符文字中的十六进制值。 \x
后面的两个十六进制数字将被解析为单个字节。例如:
QByteArray foo1 = "\x46\x6f\x6f";
QByteArray foo2 = "Foo";
Q_ASSERT(foo1 == foo2); // 'foo1' and 'foo2' are equal
如果您希望访问mainArray
中以十六进制表示的值,只需使用QByteArray::at
或subscript operator,如下所示:
QByteArray mainArray = "\xFF\xFF\x01\x04\x01\x0B\x03\xEC";
int num1 = mainArray[0]; // 0xFF
int num2 = mainArray[1]; // 0xFF
int num3 = mainArray[2]; // 0x01
// ...
要注意的一点是,QByteArray
的值类型为char
,这是一种签名类型,因此大多数系统上的\xFF
将为-1
255
。要解决上述问题,可以采用以下解决方案:
QByteArray mainArray = "\xFF\xFF\x01\x04\x01\x0B\x03\xEC";
int num1 = 0xff & mainArray[0];
int num2 = 0xff & mainArray[1];
int num3 = 0xff & mainArray[2];
// ...