QString from;
unsigned char *to;
int toSize;
unsigned char *buff;
int buffSize;
int i;
buffSize = toSize*2; //此处 *2 为自己工作需要
if(from.size() != buffSize)
return -1;
buff = (unsigned char *)malloc(buffSize);
if(buff == NULL)
return -1;
memcpy(buff, from.toLocal8Bit().constData(), buffSize); //先将QString 转换为char*
for(i=0; i<buffSize; i++)
{
if(buff[i]>='0' && buff[i]<='9')
buff[i] = buff[i] - '0';
else if(buff[i]>='a' && buff[i]<='f')
buff[i] = buff[i] - 'a' + 10; //buff[i] -= 'a' - 10;
else {
return -1;
free(buff);
}
}
for(i=0; i<toSize; i++)
to[i] = buff[i<<1]<<4 + buff[i+1]; //将buf[i<<1]<< 右移四位
free(buff);
return 0;
此处 unsigned char * 等同于binary 数据类型