热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Qt中QString与int,char等互转

简述:QString类提供了丰富的转换函数,可以将一个字符串转换为数值类型或者其他的字符编码集。QString::toInt()函数将字符串转换为整型数

简述:


QString类提供了丰富的转换函数,可以将一个字符串转换为数值类型或者其他的字符编码集。QString::toInt()函数将字符串转换为整型数值,类似的函数还有toDouble()、toFloat()、toLong()、toLongLong();





1、  int, float , double类型 转换为QString





有两种方法:

A .  使用arg


long a = 36;

QString s = QString("%1").arg(a); // s == "36" // int QSting


QString stepInfo = tr("Time: %1")

.arg(QString::number(timestamp,10), 8, '0'); //10进制,8位,不足补0




B .  使用QString::number() ;


long a = 63;

QString s = QString::number(a, 10); // s == "63"

QString t = QString::number(a, 16).toUpper(); // t == "3F" //toUpper: 大写

  1. static QString number(int, int base=10);
  2. static QString number(uint, int base=10);
  3. static QString number(long, int base=10);
  4. static QString number(ulong, int base=10);
  5. static QString number(qlonglong, int base=10);
  6. static QString number(qulonglong, int base=10);
  7. static QString number(double, char f='g', int prec=6);


第二参数可省略,省略时为10,表示10进制;




2、 QString 转换为 int类型



基数默认为10,基数须在2到36之间;


Qstring str="FF";

bool ok;

int dec=str.toInt(&ok,10); //dec=255 ; ok=true //QString int

int hex =str.toInt(&ok,16); //hex=255;ok=true; //QString int




3、 QString 转换为 double类型



QString str="123.45";

double val=str.toDouble(); //val=123.45 //QString double


bool ok;

double d;

d=QString("1234.56e-02").toDouble(&ok); //ok=true;d=12.3456





4、 QString 转换为float 类型



QString str="123.45";

float d=str.toFloat(); //d=123.45

QString str="R2D2";

bool ok;

float d=str.toFloat(&ok); //转换是被时返回0.0,ok=false;




5、 QString 与 char 互转



1 >  char 转 QString


char a='b';

QString str;

str=QString(a);


2 >  QString 转 char


QString str="qq";

char *ch;

ch = str.toLatin1.data();






6 、 const char * 转 char *



char *ch1="tt";

const char *ch2="qq";

ch1 = (char *)ch2;




7、 char *  与 QByteArray 互转



1 >   QByteArray 转 char *


char *ch;

QByteArray byte;

ch = byte.data();


2 > char * 转 QByteArray 


char *ch;

QByteArray byte;

byte = QByteArray(ch);




8、 QString 转换为char*



QString提供的字符编码集的转换函数将会返回一个constchar*类型版本的QByteArray,即构造函数QByteArray(constchar*)构造的QByteArray对象。QByteArray类具有一个字节数组,它既可以存储原始字节(raw bytes),也可以存储传统的以“\0”结尾的8位的字符串。在Qt中,使用QByteArray比使用const char*更方便,且QByteArray也支持隐式共享。转换函数有以下几种。



① toAscii():返回一个ASCII编码的8位字符串。

② toLatin1():返回一个Latin-1(ISO8859-1)编码的8位字符串。

③ toUtf8():返回一个UTF-8编码的8位字符串(UTF-8是ASCII码的超级,它支持整个Unicode字符集)。

④ toLocal8Bit():返回一个系统本地(locale)编码的8位字符串。




QString qstr("hello,word");

const char * p = qstr.toLocal8Bit().data();

const char *p2 = qstr.toStdString().data();



9、 QByteArray  与 QString 互转



1 > QByteArray  转 QString


QByteArray byte;

QString string;

string = QString(byte);

2 > QString  转 QByteArray  


QByteArray byte;

QString string;

byte = string.toAscii();






10、当前时间转化为QString



QString b_dateTime;

b_dateTime.append(tr("%1").arg(QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss")));






11、数值合并



QByteArray 中的两个字节合并成一个低八位一个高八位数据。


QByteArray handle_Data;

// byte0为高8位

// 取出对应位的16进制char型之后转换为16进制的int型(强制转换)

int data1= (unsigned char)handle_Data.at(0);

// byte1为低8位

// 取出对应位的16进制char型之后转换为16进制的int型(强制转换)

int data2= (unsigned char)handle_Data.at(1);

int data_sum= data1<<8|data2;//移位8位是一个字节

// 将16进制data_sum转换为string类型的10进制数便于在text上显示

QString data_string= QString::number(data_sum,10);


推荐阅读
  • Netty框架中运用Protobuf实现高效通信协议
    在Netty框架中,通过引入Protobuf来实现高效的通信协议。为了使用Protobuf,需要先准备好环境,包括下载并安装Protobuf的代码生成器`protoc`以及相应的源码包。具体资源可从官方下载页面获取,确保版本兼容性以充分发挥其性能优势。此外,配置好开发环境后,可以通过定义`.proto`文件来自动生成Java类,从而简化数据序列化和反序列化的操作,提高通信效率。 ... [详细]
  • 本指南从零开始介绍Scala编程语言的基础知识,重点讲解了Scala解释器REPL(读取-求值-打印-循环)的使用方法。REPL是Scala开发中的重要工具,能够帮助初学者快速理解和实践Scala的基本语法和特性。通过详细的示例和练习,读者将能够熟练掌握Scala的基础概念和编程技巧。 ... [详细]
  • 本文详细探讨了Java中Unicode编码的二进制转换方法及其具体实现。通过分析\u开头的字符串,解释了每组\uxxxx如何对应一个特定的Unicode字符,并提供了相关代码示例以加深理解。希望读者在实际开发中能有效应用这些知识。 ... [详细]
  • PHP中元素的计量单位是什么? ... [详细]
  • 深入剖析Java中SimpleDateFormat在多线程环境下的潜在风险与解决方案
    深入剖析Java中SimpleDateFormat在多线程环境下的潜在风险与解决方案 ... [详细]
  • Python 程序转换为 EXE 文件:详细解析 .py 脚本打包成独立可执行文件的方法与技巧
    在开发了几个简单的爬虫 Python 程序后,我决定将其封装成独立的可执行文件以便于分发和使用。为了实现这一目标,首先需要解决的是如何将 Python 脚本转换为 EXE 文件。在这个过程中,我选择了 Qt 作为 GUI 框架,因为之前对此并不熟悉,希望通过这个项目进一步学习和掌握 Qt 的基本用法。本文将详细介绍从 .py 脚本到 EXE 文件的整个过程,包括所需工具、具体步骤以及常见问题的解决方案。 ... [详细]
  • 本文以 www.域名.com 为例,详细介绍如何为每个注册用户提供独立的二级域名,如 abc.域名.com。实现这一功能的核心步骤包括:首先,确保域名支持泛解析,即将 A 记录设置为 *.域名.com,以便将所有二级域名请求指向同一服务器。接着,在服务器端使用 ASP.NET 2.0 进行配置,通过解析 HTTP 请求中的主机头信息,动态识别并处理不同的二级域名,从而实现个性化内容展示。此外,还需在数据库中维护用户与二级域名的对应关系,确保每个用户的二级域名都能正确映射到其专属内容。 ... [详细]
  • 本文介绍了如何利用ObjectMapper实现JSON与JavaBean之间的高效转换。ObjectMapper是Jackson库的核心组件,能够便捷地将Java对象序列化为JSON格式,并支持从JSON、XML以及文件等多种数据源反序列化为Java对象。此外,还探讨了在实际应用中如何优化转换性能,以提升系统整体效率。 ... [详细]
  • Java中不同类型的常量池(字符串常量池、Class常量池和运行时常量池)的对比与关联分析
    在研究Java虚拟机的过程中,笔者发现存在多种类型的常量池,包括字符串常量池、Class常量池和运行时常量池。通过查阅CSDN、博客园等相关资料,对这些常量池的特性、用途及其相互关系进行了详细探讨。本文将深入分析这三种常量池的差异与联系,帮助读者更好地理解Java虚拟机的内部机制。 ... [详细]
  • 在本文中,我们将为 HelloWorld 项目添加视图组件,以确保控制器返回的视图路径能够正确映射到指定页面。这一步骤将为后续的测试和开发奠定基础。首先,我们将介绍如何配置视图解析器,以便 SpringMVC 能够识别并渲染相应的视图文件。 ... [详细]
  • 如何在JavaScript中实现字符到ASCII码的转换 ... [详细]
  • AIX编程挑战赛:AIX正方形问题的算法解析与Java代码实现
    在昨晚的阅读中,我注意到了CSDN博主西部阿呆-小草屋发表的一篇文章《AIX程序设计大赛——AIX正方形问题》。该文详细阐述了AIX正方形问题的背景,并提供了一种基于Java语言的解决方案。本文将深入解析这一算法的核心思想,并展示具体的Java代码实现,旨在为参赛者和编程爱好者提供有价值的参考。 ... [详细]
  • 2012年9月12日优酷土豆校园招聘笔试题目解析与备考指南
    2012年9月12日,优酷土豆校园招聘笔试题目解析与备考指南。在选择题部分,有一道题目涉及中国人的血型分布情况,具体为A型30%、B型20%、O型40%、AB型10%。若需确保在随机选取的样本中,至少有一人为B型血的概率不低于90%,则需要选取的最少人数是多少?该问题不仅考察了概率统计的基本知识,还要求考生具备一定的逻辑推理能力。 ... [详细]
  • 在Python中,通过实现一个便捷的函数来解码Base64编码的数据,并将其转换为数组形式。该函数能够将Base64字符串解码为字节数组,便于进一步处理。例如,可以使用如下代码片段进行解码:`base64_decode_array('6gAAAOsAAAD')`。这为处理二进制数据提供了高效且简洁的方法。 ... [详细]
  • Java 零基础入门:SQL Server 学习笔记(第21篇)
    Java 零基础入门:SQL Server 学习笔记(第21篇) ... [详细]
author-avatar
南京展鸿物流_728
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有