专栏首页ExASICpython的数字与字符串相互转换
原创

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

字符串转数字

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

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

s = '10'
n = int(s)
print(type(n)) # <class 'int'>
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 

format格式定义详见: https://docs.python.org/3/library/string.html#formatspec

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

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?各位在使用时要留意,以免掉坑里。

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Pulse-latch approach reduces dynamic power

    大家都在讨论Latch的缺点,比如时序分析中存在borrow time的问题,如何在数字电路设计时避免产生latch。然而,在一些大公司,也时常可以见到用lat...

    ExASIC
  • 芯片设计中的Makefile简明教程

    Makefile可以根据指定的依赖规则和文件是否有修改来执行命令。常用来编译软件源代码,只需要重新编译修改过的文件,使得编译速度大大加快。

    ExASIC
  • 后仿中的异步D触发器设置

    在PR后仿时,经常会遇到讨厌的红色X(不定态)。而debug不定态的起因又很麻烦,有可能用Verdi调试半天还是没能找到根本的原因。

    ExASIC
  • 《Python程序设计与算法基础教程(第二版)》

    标识符的第一个字符必须是字母,下划线(_);其后的字符可以是字母、下划线或数字。一些特殊的名称,作为python语言的保留关键字,不能作为标识符以双下划线开始和...

    用户7886150
  • 第2课 python数据类型与转换

    是的,我们主要是3类数据 类型。。 3者之间可以转换,但是有条件,我们先一个个说吧。

    py3study
  • python: cmp 内建函数 (py3中被取缔)

    比较两个对象x和y:如果x < y ,返回负数;x == y,返回0;x > y,返回正数。

    JNingWei
  • python 的err输出BaseExc

    try: print('try...') r = 10 / 0 print('result:', r) except BaseException as e: p...

    py3study
  • (面试题)python面试题集锦-附答案

      GIL是python的全局解释器锁,在一个进程中如果有多个线程执行,其中一个线程在执行的时候会霸占python解释器(加锁即GIL),那么其他线程就不能执行...

    py3study
  • 自动化测试储备 | Python基础语法学习

    测试人员做Python自动化的前提是需要具备基础编程底子,熟悉相关自动化测试框,以及自动化过程当中使用的相关模块与函数

    测试小兵
  • 使用数组作为索引遍历numpy数组

    DrawSky

扫码关注云+社区

领取腾讯云代金券