Qt数据类型与强制转换(整理)

变量(Variable)和对象(Object)

在python中的变量不需要声明,因为python是动态语言。python中所有的东西都是对象。

数字(Number)和字符(String)
在python中包括几种(整数、浮点数、长整数)数字类型和两种字符类型。

整数(Integer)和长整数(Long Integer)
Python提供了三种整数类 型:bool,int和long。bool类型只有两个值True和False,在数值环境中被当作1和0对待。long类型支持的数字的大小仅受机器内 存大小的限制。使用long类型的例子:q=7L。唯一不足的是:long类型比int类型慢。

浮点数(Float)和小数(Decimal)
Python提供了三种浮点 值:float,Decimal和complex。其中float的值为双精度浮点数,表示的范围决定于编译python的C(或Java)编译器。由于 计算机表示浮点数的方式的原因,会导致小的误差。float使用64位表示浮点数。如果需要更高的精确度,可以使用decimal模块中的Decimal 数字(默认使用28位表示小数部分)。但是运行的时候比float慢很多。Decimal数字适用于金融计算。
使用Decimal的例子:
import decimal
decimal.Decimal("5.1")
decimal.Decimal("8.9e-4")
Python也提供了内建的复数类型:complex。但是使用j作为虚数单位。例如:c=5.4+0.8j。

字节字符串(Bytestring),Unicode字符串(Unicode String)和QString
Python中有两种内建的字符串:str(表示字节字符串)和unicode(表示Unicode字符)。PyQt提供了第三种字符串类型:QString。
the safest route is to use strs for 7-bit ASCII and for raw binary 8-bit bytes, and unicode or QString otherwise.

集合(Collection)
内建的集合类型有:tuple(元组)、list(列表)、dict(字典)、set和frozenset。其中tuple和frozenset是不可变的,其它都是可变的。
在Python标准库中有一个集合类型,此类型不包含类型索引,而是包含指定类型的数字。这就是array类型。它使用在需要存储大量的数字并且运行效率尽可能高的情况下。

元组(Tuple)
元组表示的是一个包含零个或更多个对象索引的有序序列。元组支持序列函数(如len())。这使得我们从元组中提取项目十分容易。然而,由于元组是不可变的,所以我们不能替换或者删除其中的项目。但我们可是通过把元组转换成列表间接实现此目的。
创建元组时,使用与不使用圆括号“()”都可以得到一个元组,这是没有区别的。
例如:
ex1=a,b,c
ex2=(a,b,c)
是一样的。

列表(List)
列表是与元组类似的有序序列。在字符串和元组中使用的序列函数及切片工具均严格适用于列表。与元组的区别是,列表可变,拥有可以用来改变它的函数。创建列表的时候,必须方括号“[]”或者使用list()构造器。

字典(Dictionarie)
dict类型是一个数据字典,也被看成联 合数组。字典包含一组无序的“键—值”对以及提供快速的键查询。字典中的键必须是唯一的,并且是不可变的,如元组、字符串或数字;值可以是任意类型。它和 Perl中的hash、Java中的HashMap和C++中的unordered_map类似。
字典可以使用dict()构建器构建。

集合(Set)(和数学上的集合定义比较接近)
Python提供了两种set类型:set和frozenset。它们都是无序的,因此都不是序列。Set可变,它的项目可增加或移除。Frozenset不可变,不能被改变。所以,Frozenset也能用作字典的“键”。
Set中的项目是唯一的;试图增加一个已存在于set中的项目到set中,add()方法将什么也不做。包含相同项目的两个set相等,而不管其中项目的插入顺序。set和只有“键”而无“值”的字典类似。
frozenset可以使用单一的序列参数创建,例如,元组或列表。set也可以使用相同的方式创建。
例如:
unicorns = set(("Narwhal","Oryx","Eland"))
如果创建的是set对象,那么就可使用add()和remove()方法来增加和移除set中的项目了。

内建函数(Build-in Function)
Python中有大量的内建函数和操作符:例如,del,print,len(),type(),help(),dir(str), range(), open(), hasattr(), isinstance(), max(), min()
与set相关的一些内建函数与操作符:
in,not in,len(), clear(), copy(), add(), remove(), discard(), issubset(), issuperset(), union(), intersection(), difference()
一些与序列(元组,列表,字典)相关的内建函数与操作符:
all, any, in, not in, len(), max(), min(), sum()
一些数学相关的内建函数
abs(),divmod(i,j),hex(i),oct(i),float(x),int(x),long(x),pow(x,y),round(x,n)

 

 

类型转换

把QString转换为 double类型

方法1.QString str="123.45";

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

方法2.很适合科学计数法形式转换

bool ok;

double d;

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

把QString转换为float形

1.QString str="123.45";

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

2.QString str="R2D2";

bool ok;

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

把QString形转换为整形

1.转换为十进制整形

注意:基数默认为10。当基数为10时,并且基数必须在2到36之

间。如果基数为0,若字符串是以0x开头的就会转换为16进制,若以0开头就转换为八进制,否则就转换为十进制。

Qstring str="FF";

bool ok;

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

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

3.常整形转换为Qstring形

long a =63;

QString str=QString::number(a,16); //str="3f";

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

Qstring 转换char *问题!

方法一:
QString qstr("hello,word");
const char * p = qstr.toLocal8Bit().data();
方法二:
const char *p = qstr.toStdString().data();
转换过来的是常量

把当前时间转化为QString...

public QDateTime qdate = QDateTime.currentDateTime();
datetime = qdate.toString("yyyy年MM月dd日ddddhh:mm:ss");
如果不是QTime和QDate类比如说:通过TCP/IP接收到的char unsigned char 类等如何转换为QString类
QString Time2String( DWORD dwTime)
{
char cTime[50] = {0};
memset(cTime,0,50);
strftime(cTime,32,"%Y-%m-%d %H:%M:%S",localtime(&time_t(dwTime)));
return QString(cTime);
}

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值