qt 进制转换 数值和字符串转换记录

**

1一个基于c语言的十进制和十六进制进制转换函数

**
(这个函数比较方便移植,不止可以用在qt上。函数已经测试过了,可以支持64位及以下的数据进行转换)(如果有更多位数就把15改成更大的数)

//#include<stdlib.h>
//#include<stdio.h>

//十进制数转换为16进制数
//注意调用函数时一定注意hex_num[16]数组要初始化。否则数组的值是随机的。
//支持32位无符号数,满足扩展帧的要求

 void MainWindow:: dec_to_hex( uint32_t num,char *hex_num )
{
    char arr[] = "0123456789ABCDEF";
    int i = 15;//只支持32位数据,所以这里实际用8个字节即可
    int j = 0;
    while (num)//num==0则说明转换完毕
    {
        hex_num[i--] = arr[num % 16];   //对十进制数求余并最终与hextable数组中     的字符匹配
        num = num / 16;//i--表示从数组高字节往低字节赋值(为了显示时调换顺序)
    }
    qDebug() <<i;//调试使用
    //假设3个16进制数数,还有13个空位
    for(i;i<15;i++ )//将数据整体向低字节对齐
    {
        hex_num[j]=hex_num[i+1];
        j++;
    }
}

```cpp
调用示例:
//调用示例
void main
{
    char hex_num[16]={0};//这里一定要初始化(计算机的初始值是不确定的,单片机可能是初始为0)
    uint32_t i1;
    i1=217267949;
    //dec_to_hex(217267949,hex_num);
    dec_to_hex(i1,hex_num);
    qDebug() <<hex_num;//通过调试窗口输出十六进制字符串


    QString i3;//定义一个QString类型变量
    i3=hex_num;//必须将字符串数组hex_num赋值给QString变量才能在textBrowser显示
    textBrowser->append("Successfully_bound_port:" +i3);//通过文本显示器显示字符串(加号是不同变量之间的分割符)
    //然后补充一个小知识点textBrowser显示信息有两个函数,一个是 textBrowser->append();
    //另一个是:
    //ui.resultbrowser->insertPlainText(a1);//输出到textbrowser
	//ui.resultbrowser->moveCursor(QTextCursor::End);//将光标移动到当前文字最后
	//具体区别还需测试。
}

输出结果
在这里插入图片描述

**

2使用qstring进行十进制和十六进制转换

**

//示例
uint32_t i1;
i2=217267949;
qDebug() <<"十进制转16进制----"<< QByteArray::number(i1,16);
//这个还是挺方便的,一行语句就完成了转换,但是显示出来的十六进制是小写,前面那个方法已经成功实现了我的功能,这里就不纠结了,反正也不用这种方法。

输出结果
在这里插入图片描述
3:待补充。
在做一个收发Can数据的上位机,应该会处理很多字符串。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值