QT中的数据类型转换小本本

最近这令人头疼的就是各种类型的转换了

所以打算出一篇数据类型转换的文章,记录一下我所用到的实测可以用的类型转换方法。以后就不用这度娘那Google了。

进制转换

//10进制数转任意进制
char *decimal2Others (int value, char *string, int radix) {
    char index[] = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"; /* 索引表 */
    unsigned uvalue; /* 无符号整型的中间变量,用于处理负数 */
    char temp;
    int i=0, j, k;
​
    /* 确定uvalue的值 */
    if (radix==10 && value<0) { /* 十进制负数 */
        uvalue = (value*-1);
        string[i++] = '-';
    }
    else
        uvalue = (unsigned)value; /* (unsigned)value == 2^32 - value (4字节unsigned) */
​
    /* 除基数取余 */
    /* 计算结果存入string字符串,此时为最终转换结果的逆序 */
    do {
        string[i++] = index[uvalue % radix];
        uvalue /= radix;
    } while (uvalue);
    string[i] = '\0'; /* string字符串末尾补'\0' */
​
    /* 逆序处理 */
    /* string字符串首尾元素依次交换 */
    if (string[0]=='-') /* 十进制负数 */
        k = 1; /* 跳过负号 */
    else
        k = 0;
​
    for (j=k; j<=(i-1)/2.0; j++) {
        temp = string[j];
        string[j] = string[i-1-j+k];
        string[i-1-j+k] = temp;
    }
​
    return string;
}

有符号转无符号

//char* 转 unsigned char*
void char2uchar(char * str ,unsigned char * ustr,int length)
{
    int i = length, j = 0,counter=0;
    char c[2]={0};
    unsigned int bytes[2]={0};
    for (j = 0; j < i; j += 2)
    {
        if (0 == j % 2)
        {
            c[0] = str[j];
            c[1] = str[j + 1];
            sscanf(c, "%02x" , &bytes[0]);
            ustr[counter] = bytes[0];
            counter++;
        }
    }
    return;
}

uint8_t转QString

//uint8_t 转为str
QString uint82qstring(uint8_t *udata,int length){
    QString code_str;
    for (int i = 0; i < length;i++)
    {
        //分离16进制数的"十位"和“个位”
        char s1 = char(udata[i] >> 4);
        char s2 = char(udata[i] & 0xf);
        //将分离得到的数字转换成对应的ASCII码,数字和字母分开,统一按照小写处理
        s1 > 9 ? s1 += 55 : s1 += 48;
        s2 > 9 ? s2 += 55 : s2 += 48;
        //将处理好的字符放入到string中
        code_str.append(s1);
        code_str.append(s2);
    }
    return code_str;
}

QString转uint8_t

unsigned char puchar[1024];
uint8_t *qstring2uint8(QString string){
    char * pchar;
    QByteArray temparr;
    int len;
    temparr = string.toLatin1();
    pchar = temparr.data();
    len = temparr.size();
    //将得到的char类型转为uchar
    convertStrToUnChar(pchar,puchar,len);
    return puchar;
}

数字转字符串

int i=10;
QString s = QString::number(i);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

FlechazoCLF

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值