• 8880阅读
  • 6回复

char转QString问题 [复制链接]

上一主题 下一主题
离线yuening1202
 
只看楼主 倒序阅读 楼主  发表于: 2009-03-18
unsigned char buf[]={0xD7,0x0B,0x01};
我想转换成QString str="D7 OB 01";应该怎么转换?

之前我用过 QString s((char*)buf1);和QString str="";str.append((char*)buf1);都不行,得到的是乱码,应该是ASCII码对应的符号值
离线foxyz

只看该作者 1楼 发表于: 2009-03-18
呵呵,两种办法:
1.自己用switch转换。分别转换前1位和后一位
2.使用函数。我帮你找找这个函数。有这个函数的。
离线foxyz

只看该作者 2楼 发表于: 2009-03-18
不好意思,我找的函数是把字符方式存放的16进制转换成16进制。
比如:字符'D0'转换出来是0xD0,这主要是用在使用sqlite的blob字段解析
离线foxyz

只看该作者 3楼 发表于: 2009-03-18
unsigned char buf[]={0xD7,0x0B,0x01};
根据第一种方法,可以这么做:
char out[3];
memset(out,0,3);
char currentChar = buf;
switch(currentChar & 0xF0)
{
    case 0x00 : {out[0] = '0' ;break;}
    case 0x10 : {out[0]='1';break;}
   .......
    case 0xF0:{out[0]='F';break;}
}
switch(currentChar & 0x0F)
{
    case 0x00: {out[1]='0';break;}
    case 0x01:{out[1]='1';break;}
   ......
}

QString outChar1 = out;
...
离线yanglisun
只看该作者 4楼 发表于: 2009-03-18
这个不难吧....
我第一个想到的就是位操作
只看该作者 5楼 发表于: 2009-03-18
引用楼主yuening1202于2009-03-18 09:59发表的 char转QString问题 :
unsigned char buf[]={0xD7,0x0B,0x01};
我想转换成QString str="D7 OB 01";应该怎么转换?
之前我用过 QString s((char*)buf1);和QString str="";str.append((char*)buf1);都不行,得到的是乱码,应该是ASCII码对应的符号值

你根本就没弄清楚什么是字符数组什么是字符串吧
离线yuening1202
只看该作者 6楼 发表于: 2009-03-19
感谢大家,特别感谢foxyz ,问题已解决
确实,基本概念还有待加强
快速回复
限100 字节
 
上一个 下一个