繁体   English   中英

Qt QByteArray无符号数据类型

[英]Qt QByteArray unsigned datatype

我需要通过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?

这是我对为什么打印4294967210而不是170的解释,这是您的原始问题:

  1. qb_array[1]返回值为0xAA的带signed char类型
  2. 将带signed charuint输入:
    • 首先将值提升为int类型,并保留符号:它变为0xFFFFFFAA
    • 那么它将被解释为无符号,因此为4294967210(十进制格式)。
  3. 以十进制格式打印此值得到4294967210。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM