Qt 常用的字符转换,QString如何转换成const char类型, 转 PWCHAR wchar_t*

2023-11-07

常用的字符转换(日常记录…)

  1. QString如何转换成const char类型
    const char *cmd_data = qstring.toStdString().c_str(); //qstring为待转换的qstring类型字符串
QString format_cmd = u_format_exe_path + " " + mCurrentDisk_name + ":\n\r";
qDebug() << __FUNCTION__ << __LINE__ <<  "format_cmd:" << format_cmd;
const char *cmd_data = format_cmd.toStdString().c_str();
qDebug() << __FUNCTION__ << __LINE__ <<  "cmd_data:" << cmd_data;
    //生成crc32...crc: 4BC8EBB1.....................s
    //将crc32转化为unsigned char类型,比如字符串123a5c,转成0x12,0x3a,0x5c
    unsigned char crc32_buf[4];
    memset(crc32_buf,0x0, 4);
    const char *crc32_tmp_ch = crc32.toStdString().data();
    char crc32_tmp_buf[4*2];
    memset(crc32_tmp_buf,0x0,sizeof (crc32_tmp_buf));
    memcpy(crc32_tmp_buf,crc32_tmp_ch,4*2);//crc32_tmp_buf 存的是4BC8EBB1,按字符存,所以是4的2倍
    //将十六进制字符串转成十六进制,如:字符串2ace9f0f577ebf674d2de1353cb7412c1a663515398f8638e5de262c1e09d31e,转成0x2a 0xce 0x9f 0x0f...
    int n = glb_common_interface::hexstring_to_hex(crc32_tmp_buf, crc32_buf);

    for(int j=0; j<4; j++)
    {
//        printf("crc32_buf[%2d] : %2x  ", j, crc32_buf[j]);
        qDebug("crc32_buf[%2d] : %2x ", j,  crc32_buf[j]);
        if ((j + 1) % 4 == 0)
        {
            printf("\r\n");
        }
    }
  1. QString 转化 PWCHAR wchar_t*
 PWCHAR格式可以看到定义为
 
 typedef WCHAR *PWCHAR,*LPWCH,*PWCH;
 typedef wchar_t WCHAR;
  
 PWCHAR实际上就是 wchar_t* 
  
  • 方法一
    测试过可用
QString spi_path = filepath;
PWCHAR strSpiPath=new wchar_t[MAX_PATH];  //#define MAX_PATH 260  MAX_PATH是在minwindef.h中定义的
int s1=spi_path.toWCharArray(strSpiPath);
strSpiPath[s1]=0;

其中toWCharArray
QString::toWCharArray(wchar_t * array)
QT官方文档确实注明了:Note: This function does not append a null character to the array.

qstring.h
toWCharArray的返回值,我的理解貌似是字符串strSpiPath的长度的值,然后strSpiPath[s1]=0;是把最后一个位置设成0,类似于字符串拷贝到字符数组里面,要在其后面添加一个\0标识符似的。

qstring.h

inline int QString::toWCharArray(wchar_t *array) const
{
    if (sizeof(wchar_t) == sizeof(QChar)) {
        memcpy(array, d->data(), sizeof(QChar) * size());
        return size();
    } else {
        return toUcs4_helper(d->data(), size(), reinterpret_cast<uint *>(array));
    }
}

相对应的wchar类型的转换为qstring,用这个fromWCharArray

  • 方法二
    未测试过,贴出来供参考
PWCHAR strSpiPath;
QString spi_path = filepath;
qDebug()<< __FILE__ << __FUNCTION__ << __LINE__ << "spi_path:" << spi_path;
wchar_t *spi_path_w_char= const_cast<wchar_t *>(spi_path.toStdWString().c_str());
strSpiPath = spi_path_w_char;

//wchar_t 转Qstring
QString str_test= QString::fromWCharArray(strSpiPath);
  1. UCHAR 如何转换成QString 类型

QString u_sn = QString::fromUtf8(reinterpret_cast<char *>(sn_buf), 16);

        UCHAR sn_buf[32];
        memset(sn_buf,0x0,sizeof (sn_buf));
        int ret_sn =   GetSN( hDev, sn_buf,  16);
        QString u_sn;
        if(ret_sn == 1)
        {
            QString u_sn = QString::fromUtf8(reinterpret_cast<char *>(sn_buf), 16);
        }
        else
        {
            u_sn.clear();
        }

十进制转十六进制qstring

            QString xor_str_hex = QString("%1").arg(xor_int, 2, 16, QChar('0'));  // 保留2位,转换为16进制,不足补0

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Qt 常用的字符转换,QString如何转换成const char类型, 转 PWCHAR wchar_t* 的相关文章

  • 如何在 Bash 中将字符串转换为小写

    有办法进去吗bash questions tagged bash将字符串转换为小写字符串 例如 如果我有 a Hi all 我想将其转换为 hi all 有多种方法 POSIX标准 https en m wikipedia org wiki
  • 将 h1 元素的内容复制到剪贴板?

    所以 我做了一个翻译器 但效果不是很好 但无论如何 它正在工作 我想尝试添加一些可以复制结果的内容 有没有办法做到这一点 以下是我的代码 提前致谢 我知道有一种方法可以通过输入来完成此操作 但我不确定是否可以通过标题来完成 var myTe
  • 获取小部件的背景颜色 - 真的

    我无法获取小部件的实际背景颜色 在我的特殊情况下 我在使用 QTabWidget 中的小部件时遇到问题 这是在Windows7上 因此 经典的小部件有一些灰色背景 而选项卡内的小部件通常用白色背景绘制 I tried def bgcolor
  • QToolBar 的菜单延迟

    我通过制作 QAction 并向其添加 QMenu 在 QToolBar 上有一个菜单 如何消除单击图标时出现菜单之前的延迟 QToolBar myToolBar new QToolBar this QAction myAction new
  • 如何将整个流读入 std::string ?

    我正在尝试将整个流 多行 读入字符串中 我正在使用这段代码 它有效 但它冒犯了我的风格感 当然有更简单的方法吗 也许使用字符串流 void Obj loadFromStream std istream stream std string s
  • 调整 QML 图像显示尺寸

    我有一个带有嵌套的 QML 窗口RowLayout 在内排我有两个图像 来源 png这些图像的文件 故意 相当大 当我尝试设置height这些图像上的属性使它们变小 但它们仍然被画得很大 Desired Appearance Actual
  • C# 中将一个字符串拆分为另一个字符串

    我一直在使用Split 分割字符串的方法 但这似乎仅在您按字符分割字符串时才有效 有没有办法分割一个string 另一个字符串是按参数分割的 我尝试将拆分器转换为字符数组 但没有成功 换句话说 我想分割string THExxQUICKxx
  • setContextProperty 和对象的 setProperty 之间的区别

    我现在真的很困惑 有什么区别 QQmlApplicationEngine engine engine rootContext setContextProperty myObject userData and object gt setPro
  • Qt 计算和比较密码哈希

    目前正在 Qt 中为测验程序构建面向 Web 的身份验证服务 据我了解 在数据库中存储用户密码时 必须对其进行隐藏 以防落入坏人之手 流行的方法似乎是添加的过程Salt https en wikipedia org wiki Salt cr
  • 检查 href 中是否存在 jQuery 中的查询字符串

    我目前有一段 jQuery 用于附加带有一些位置信息的 URL jQuery a attr href function return this href location 123 abc 我的问题是大多数链接都有一个 其中使用上面的 就可以
  • 2.5 是否有一个 Python 模块提供类似于 2.6 中的 "string".format() 调用的功能?

    2 5 是否有免费的 Python 模块提供类似于 2 6 3 x 中的 string format 调用的功能 我正在为 2 5 编写新代码 我不想在新代码中使用 格式表达式 您可能会发现这里的代码可以适应您的需要 http svn py
  • QLineEdit:显示处理后的文本,而不是输入的文本,但保留它(自定义回显模式)

    我想要一个QLineEdit不显示输入的文本 而是显示经过处理的版本 同时保留原始文本并在通过请求时返回它text 就像密码回显模式一样 但我不希望每个字符都被屏蔽 我想虚拟化空间 例如什么时候some text with spaces i
  • 如何将图标放置到 QLineEdit 上?

    stackoverflow com 网站的右上角有一个带有放大镜头的搜索字段和一个灰色的 搜索 关键字 我想知道是否有可能实现相同的外观QLineEdit 如果是这样那怎么办 QLineEdit lineEdit new QLineEdit
  • 字符串格式化表达式 (Python)

    字符串格式化表达式 This is d s example 1 nice 字符串格式化方法调用 This is 0 1 example format 1 nice 我个人更喜欢方法调用 第二个示例 以提高可读性 但由于它是新的 因此随着时间
  • Qt 支持在 QIcon 中为 SVG 着色

    看来 Qt 不支持 SVG 中路径标签上的描边 填充选项
  • 从 str 转换为 float 时保持尾随 0

    将带有尾随零的数字从字符串转换为浮点数时遇到以下问题 a 1 100 string a str a float a float string a float a 1 1 有没有办法将 str 转换为 float 同时保留末尾的尾随 0 首先
  • 从 Perl 中的字符串中删除标点符号

    如何从 Perl 中的字符串中删除除空格之外的所有标点符号 s punct g
  • 为什么 Haskell 的默认字符串实现是一个字符链接列表?

    Haskell 默认值的事实String众所周知 实现在速度和内存方面都效率不高 据我所知 lists一般来说 在 Haskell 中实现为单链表 并且适用于大多数小型 简单数据类型 例如Int 这似乎不是一个好主意 但是对于String这
  • Qt程序部署到多平台,如何?

    我是 Qt 编程新手 我想开发一个程序 我想在 Windows Linux ubuntu 和 Mac 上运行 听说Qt支持多平台应用程序开发 但我的问题是 在我部署或编译后 任何 Qt 库都需要在 Ubuntu 中运行这个应用程序吗 如果您
  • 如何释放字符串未使用的容量

    我正在程序中处理很多字符串 这些字符串数据在读入我的程序后的整个生命周期内都不会改变 但由于 C 字符串保留了容量 因此浪费了大量肯定不会被使用的空间 我尝试释放这些空间 但没有成功 以下是我尝试过的简单代码 string temp 123

随机推荐

  • Maven: Could not transfer artifact xxx from/to xxx

    1 美图 2 背景 遇到这个问题 Could not transfer artifact xxx from to xxx 暂时还没解决 解决后 会补上 Maven报错 Could not transfer artifact xxx from
  • float(“inf“)、float(“-inf“)

    一 python里如何表示正负无穷 正无穷 float inf 负无穷 float inf 二 用inf做简单加 乘算术运算会得到inf print 1 float inf inf print 2 float inf inf 三 除了inf
  • python线性表

    顺序表 顺序表 将元素顺序地存放在一块连续的存储区里 元素间的顺序关系由它们的存储顺序自然表示 数据元素本身连续存储 每个元素所占的存储单元大小固定相同 元素的下标是其逻辑地址 而元素存储的物理地址 实际内存地址 可以通过存储区的起始地址L
  • 山石网科国产化入侵防御系统,打造全生命周期的安全防护

    随着互联网的普及和网络安全的威胁日益增加 botnet感染成为了企业面临的重要问题之一 botnet是一种由分散的客户端 或肉鸡 组成的网络 这些客户端被植入了bot程序 受控于攻击者 攻击者通过这些客户端的bot程序 利用C C服务器对这
  • 指数分布的定义形式及应用

    转载请注明出处 http blog csdn net ningyaliuhebei article details 46409941 指数分布是连续型随机变量 指数分布具有无记忆性 指数分布是特殊的gamma分布 指数分布 Exponent
  • python主流web框架识别

    想学习web框架 又想熟悉python 问题来了 有没有极简的数据来支撑快速开发 特来研究 不能去研究几十个 没时间 研究主流的即可 Django Tornado Flask Twisted 所谓网络框架是指这样的一组Python包 它能够
  • 树组件根节点+叶节点渲染

    本人使用的是eleme的树组件进行的数据渲染 Element The world s most popular Vue UI frameworkElement 一套为开发者 设计师和产品经理准备的基于 Vue 2 0 的桌面端组件库http
  • 进阶题解:反转链表

    入门级题解 https blog csdn net m0 46663240 article details 122602996 一刷代码随想录 再次遇到这个反转链表 当时可是难到我了 现在做还是比较轻松的 思路及关键点 1 有两部分 一部分
  • ROS入门四 服务中的Server和Client

    服务中的Server和Client 简介 使用 spawn服务写一个客户端程序创建一只新海龟 服务模型 创建turtle spawn cpp 配置CMakeLists txt中的编译规则 编译并运行 总结流程 创建一个服务接受client消
  • 数学建模——仓内拣货优化问题

    仓内拣货优化问题 求解 某电商公司客户订单下达仓库后 商品开始下架出库 出库主要包含5 个流程如图1所示 定位 仓库有多个货架 每个货架有多个货格 商品摆放在货格中 且每个货格最多摆放一种商品 商品可以摆放在多个货格 订单下达仓库后 定位操
  • springboot有关type-aliases-package设置,xml别名爆红错误

    在application yaml中设置 mybatis mapperLocations classpath mapper xml type aliases package com chan springcloud entities 但xm
  • 【CSS】动态背景1

    效果 代码
  • 利用Vulnhub复现漏洞 - mini_httpd任意文件读取漏洞(CVE-2018-18778)

    mini httpd任意文件读取漏洞 CVE 2018 18778 Vulnhub官方复现教程 漏洞原理 复现过程 启动环境 端口设置 浏览器设置 BurpSuit设置 漏洞复现 Vulnhub官方复现教程 https vulhub org
  • 【目录贴】硕士实验室嵌入式学习路线参考清单

    下面是对我在硕士期间边学边实践所写的部分文章 挑选整理出一个 学习清单 其实我写到目前为止 如果你看进去了这些东西 可以说各种东西达到了熟悉 熟练的状态 可不敢说精通 面试官会出手 如果看到这篇路线总结 无论你是本科还是硕士 你也别太感觉东
  • TCP的半关闭状态以及tcp-keepalive

    文章目录 半关闭状态 实现方法 tcp keepalive 开启 tcp keepalive 方法1 Linux系统全局开启 方法2 setsockopt 设置 socket 半关闭状态 一次TCP四次挥手的过程如上图所示 设左侧为客户端
  • elasticsearch 去重查询并进行分页

    去重查询的俩种方式 在进行去重查询时 原来的目的是对于查询出的结果中一模一样的数据进行去重 但是各种百度发现都是对于单一字段的去重查询 最后索性新增了一个字段 将其他字段拼接了起来 从而根据拼接的字段进行去重查询 1 使用字段聚合 top
  • windows:windows10 下如何让程序被 Cortana搜索到

    参考 https blog csdn net qq 26462567 article details 101011871 总结 添加快捷方式到开始菜单目录
  • 测试框架pytest教程(5)运行失败用例-rerun failed tests

    content of test 50 py import pytest pytest mark parametrize i range 50 def test num i if i in 17 25 pytest fail bad luck
  • 八度音阶和频率的关

    八度音阶和频率的关系 Frequency in hertz semitones above or below middle C Octave Note 0 1 2 3 4 5 6 7 8 9 C 16 352 48 32 703 36 65
  • Qt 常用的字符转换,QString如何转换成const char类型, 转 PWCHAR wchar_t*

    常用的字符转换 日常记录 QString如何转换成const char类型 const char cmd data qstring toStdString c str qstring为待转换的qstring类型字符串 QString for