IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> Qt QString().sprintf(“%x“)解决打印无符号十六位数 -> 正文阅读

[C++知识库]Qt QString().sprintf(“%x“)解决打印无符号十六位数

场景:

最近使用海康工业相机的SDK进行二次开发,打印出来的函数返回错误码总是怪怪的,和开发手册里的对不上号,其实就是无符号十六位被Qt默认转成了int型,然后传到QString


代码:

在MFC的Demo里他是这么写的:

cstrInfo.Format(_T("Get hight failed! err code:%#x"), nRet);

而我是这么写的:

QString("%1 = Fail error code:%2").arg(str).arg(nRet);

打印结果很残酷,转成十六进制数我甚至在错误码定义里找不到对应项!
在这里插入图片描述

于是我用arg做了一下进制转换:

QString("%1 = Fail error code:%2").arg(str).arg(nRet, 0, 16);

打印出来的确实是十六进制的数,可是低八位正常,高八位全是‘f’,试着用QLatin1()去补缺位,也还是不行,看着难受。
在这里插入图片描述

接着我试着用 std::printf( ) 去打印:

// printf要求字符串是char *型,直接用QString会无法编译
std::printf("%s = Fail error code:%x", str.toLocal8Bit().data(), nRet);

打印结果是OK的!可是这只是打印输出信息,我其他弹窗接口、Log接口都把QString改成std::printf的话岂不是很麻烦啊!
不急,百度里学了一招:

QString().sprintf("%s = Fail error code:%x", str.toLocal8Bit().data(), nRet);

在这里插入图片描述

这时问题基本解决,只是编译器会在sprintf下面提示说这个写法不推荐,建议改用asprintf( ),遂改之,完美解决!

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2022-03-13 21:33:09  更:2022-03-13 21:35:13 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 4:45:18-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码