我需要通过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?
答案 0 :(得分:2)
以下是我为什么要打印4294967210而不是170的解释,这是您原来的问题:
qb_array[1]
返回signed char
类型,其值为0xAA signed char
转换为uint
类型时:
int
类型,保持符号:它变为0xFFFFFFAA