好记性不如烂笔头,有一些常用的数字,字符串转换的学习笔记
1. 将二进制数转换为指定格式的字符串形式
先来看一小段代码
>>> a = 0b0100 >>> print a 4 >>> print format(a, ‘#0b‘) 0b100 >>> print format(a, ‘0b‘) 100 >>> print format(a, ‘04b‘) 0100 >>> print format(a, ‘#06b‘) # 注意字符串中的0b也是要占两个宽度的,所以这里宽度是6才会补0 0b0100
变量a的二进制是0100,直接print的a是十进制4。如果想要将a转换为二进制形式的字符串,需要用到format函数。
官方的文档:https://docs.python.org/2/library/string.html#format-specification-mini-language
- format函数中的格式说明如下
‘#‘ -> 只适用于数字,指明转换后的格式包含前缀(如0b, 0o, 0x)
The ‘#‘ option is only valid for integers, and only for binary, octal, or
hexadecimal output. If present, it specifies that the output will be prefixed
by ‘0b‘, ‘0o‘, or ‘0x‘, respectively.
0 -> 代表当数字转换成字符后,宽度如果小于指定的宽度,则前面补0
- 同样的,不用format函数,可以用另外一种方法来实现和上面相同的效果
>>> a = 0b0100 >>> print "a = {0:04b}".format(a) a = 0100 >>> print "a = {0:#06b}".format(a) a = 0b0100
2. 将字符串(不同进制的)或者数字(不同进制的,比如2进制、16进制)转换成十进制数字
int函数可以达到这个要求,来看看一小段代码
>>> int(0b001) # ref 1 4 >>> int(0xff) # ref 2 255 >>> int(‘0b1010‘, 2) # ref 3 10 >>> int(‘111‘, 2) # ref 4 7 >>> int(‘111‘) # ref 5 111
int函数中的第一个参数,可以传入数字型,也可以传入字符型。
- 当传入数字型时,会根据类型,自动将其转换为10进制。【参考 ref 1,2】
- 当传入是字符时,可以再指定第二个参数,用来表明第一个字符串是什么进制,然后int再将其转换为10进制。当不指定第二个参数(进制类型)的时候,将默认把第一个字符串当作是10进制处理。【参考 ref 3, 4, 5】
>>> help(int) # 更多的信息参考下面的文档
class int(object)
| int(x=0) -> int or long
| int(x, base=10) -> int or long
|
| Convert a number or string to an integer, or return 0 if no arguments
| are given. If x is floating point, the conversion truncates towards zero.
| If x is outside the integer range, the function returns a long instead.
|
| If x is not a number or if base is given, then x must be a string or
| Unicode object representing an integer literal in the given base. The
| literal can be preceded by ‘+‘ or ‘-‘ and be surrounded by whitespace.
| The base defaults to 10. Valid bases are 0 and 2-36. Base 0 means to
| interpret the base from the string as an integer literal.
| >>> int(‘0b100‘, base=0)
| 4
3. 将不同进制的数字,转换成二进制形式的字符串
bin函数可以达到这个要求,来看看一小段代码
bin函数只接受数字型的参数
>>> bin(0b0100) ‘0b0100‘ >>> bin(0xff) ‘0b11111111‘
4. 将不同进制的数字,转换成十六进制的字符串
同样的,hex函数可以帮助我们完成,来看一小段代码
hex函数也只接受数字型的参数
>>> hex(15) ‘0xf‘ >>> hex(0b111) ‘0x7‘
5. 还有一个小伙伴,oct函数,用来干嘛的,类似上面的bin和hex
>>> oct(8) ‘010‘ >>> hex(7) ‘07‘
That‘s it!