分隔 QByteArray 十六进制值以分隔 int

Separate QByteArray hex values to separate int's

本文关键字:分隔 int 十六进制 QByteArray      更新时间:2023-10-16

我如何解析这些""QByteArray中的十六进制值分离为8个独立的INT?

QByteArray mainArray = "xFFxFFx01x04x01x0Bx03xEC";
int num1;
int num2;
int num3;
...

x逃逸序列代表字符串文字和字符文字中的十六进制值。x之后的两个十六进制数字将被解析为单个字节。例如:

QByteArray foo1 = "x46x6fx6f";
QByteArray foo2 = "Foo";
Q_ASSERT(foo1 == foo2); // 'foo1' and 'foo2' are equal

如果您希望访问mainArray中的十六进制表示值,请使用QByteArray::at或下标操作员如下:

QByteArray mainArray = "xFFxFFx01x04x01x0Bx03xEC";
int num1 = mainArray[0]; // 0xFF
int num2 = mainArray[1]; // 0xFF
int num3 = mainArray[2]; // 0x01
// ...

要记住的一件事,QByteArray的值类型是char,它是签名类型,因此,大多数系统上的xFF将是-1 INSEAD 255。要解决上述问题,这是一个可能的解决方案:

QByteArray mainArray = "xFFxFFx01x04x01x0Bx03xEC";
int num1 = 0xff & mainArray[0];
int num2 = 0xff & mainArray[1];
int num3 = 0xff & mainArray[2];
// ...