Qt QByteArray无符号数据类型

时间:2018-04-27 07:03:44

标签: c++ qt unsigned

我需要通过rs232发送数据,但我遇到了问题 当我发送表示整数超过128的字节时,看起来QByteArray会改变我提供的内容:

uchar uc_array[]={0x41,0xAA}; //65 170
QByteArray qb_array = QByteArray();
qb_array.append(uc_array[0]);
qb_array.append(uc_array[1]);
cout<<(uint)qb_array[0]<<endl //65
cout<<(uint)qb_array[1]<<endl //4294967210

为什么

 cout<<(uint)qb_array[1]<<endl

不打印170,而是打印4294967210?

1 个答案:

答案 0 :(得分:2)

以下是我为什么要打印4294967210而不是170的解释,这是您原来的问题:

  1. qb_array[1]返回signed char类型,其值为0xAA
  2. 当您将signed char转换为uint类型时:
    • 该值首先提升为int类型,保持符号:它变为0xFFFFFFAA
    • 然后它被解释为无符号,所以4294967210是十进制格式。
  3. 以十进制格式打印此值,得到4294967210。