python字符串数字相加_ExASIC: python的数字与字符串相互转换

python的数字与字符串相互转换

字符串转数字

经常在处理文本时,比如memory初始化文件,或者解析log中的数据做运算时,会用到字符串转数字。

最常用的就是int(str, base=10),默认是处理十进制字符串,比如:

s = '10'

n = int(s)

print(type(n)) #

print(n) # 10

那其它进制呢?

# 二进制

print(int('10', 2)) # 2

# 十六进制

print(int('a', 16)) # 10

# 前缀和大小写不重要

print(int('0xa', 16)) # 10

print(int('0Xa', 16)) # 10

print(int('0XA', 16)) # 10

带小数的字符串转数字的方法:

print(float('12.101')) # 12.101

数字转字符串

这个可以简单理解成格式化输出,用字符串的format函数就行了。在python的数据类型(三):字符串中已经有过format函数的介绍。我们再举一些例子:

print("{:b}".format(10)) # 1011

print("{:#b}".format(10)) # 0b1011

print("{:x}".format(10)) # a

print("{:#x}".format(10)) # 0xa

# 十六进制的大写形式(二进制没有大写的说法)

print("{:X}".format(10)) # A

print("{:#X}".format(10)) # 0XA

前面补0的方法:

print("{:0>4x}".format(10)) # 000a

# 同时补0和加0x

print("0x{:0>4x}".format(10)) # 0x000a

小数格式化成字符串的方法:

print("{:f}".format(12.101)) # 12.101000

print("{:.2f}".format(12.101)) # 小数点后保存两位

关于同时加0x和补0的坑

当按照官方文档,同时使用#和宽度时,实际出来的结果跟想像的不一样,如下:

>>> print("{:0>#8x}".format(10))

000000xa

>>> print("{:0>+#08x}".format(10))

0000+0xa

实际是先加0x,再对整体补0。

但是python提供了=代替>来应对这种异常。

'='

Forces the padding to be placed after the sign (if any) but before the digits. This is used for printing fields in the form ‘+000000120’. This alignment option is only valid for numeric types. It becomes the default when ‘0’ immediately precedes the field width.

所以,解决办法是:

print("{:0=#8x}".format(10)) #0x00000a

但有没有发现少了两个0?各位在使用时要留意,以免掉坑里。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值