• 3652阅读
  • 4回复

[提问]unsigned char[]转QString [复制链接]

上一主题 下一主题
离线dafei2015
 

只看楼主 倒序阅读 楼主  发表于: 2018-09-21
关键词: 求助qt5QString
unsigned  char CH[4]={0x02,0x0A,0XA2,0x60};
转成Qstring,试了网上的好多办法,都不正确。。哪位大侠亲自转下,谢谢!
离线大漠之鹰

只看该作者 1楼 发表于: 2018-09-21
为什么要转成QString啊?转了也是乱码啊。用bytearray吧
本是后山人,偶作前堂客,醉舞经阁半卷书,坐井说天阔。大志戏功名,海斗量福祸,论到囊中羞涩时,怒指乾坤错
QQ:874164244
离线dafei2015

只看该作者 2楼 发表于: 2018-09-21
回 大漠之鹰 的帖子
大漠之鹰:为什么要转成QString啊?转了也是乱码啊。用bytearray吧 (2018-09-21 14:13) 

QByteArray byte=QByteArray((char*)CH, 4);
   qDebug()<<byte.toHex();
我之前是想转QString是用lineedit显示方便
离线zzs0829

只看该作者 3楼 发表于: 2018-09-23
二进制转字符串,最起码要知道编码格式才能转成字符串。
如果不是字符串,就像楼上说的QByteArray就可以存储了。
如果你是想显示二进制的数据的打印结果可以这样:
    unsigned  char CH[4]={0x02,0x0A,0XA2,0x60};
    QByteArray arr = QByteArray::fromRawData((char *)CH, 4);
    qDebug() << arr.toHex();
1条评分金钱+1
dafei2015 金钱 +1 - 2018-09-26
离线yysr

只看该作者 4楼 发表于: 2018-09-27
要先把无符号字符转成有符合字符:

unsigned  char CH[4]={0x02,0x0A,0XA2,0x60};
QString CH1;

CH1.Resize(4);  //意思如此
for (int i =0; i < 4; i++)
    if ((CH
[ i ]&0x80) == 0x80)
         CH1[ i ] = - (CH[ i ] & 0x7f);
    else
         CH1
[ i ] = CH[ i ];







快速回复
限100 字节
 
上一个 下一个