数据类型转换

16进制和10进制之间转换

In [18]: int('a',16)        把16进制的a转换为10进制的10,16说明a是16进制数
Out[18]: 10
In [13]: int('0xa',16)  把16进制的0xa转换为十进制的10,16说明0xa是16进制数
Out[13]: 10
In [14]: int('0xb',16)  把16进制的0xb转换为十进制的11,16说明0xb是16进制数
Out[14]: 11
In [16]: hex(10)     把10进制的10转化为十六进制的0xa
Out[16]: '0xa'


[root@133 filevalue]# vim mac.py

#!/usr/bin/python
macaddr = "A4:BA:DB:20:93:E9"  
prefix_mac = macaddr[:-3]  #获取A4:BA:DB:20:93
last_two = macaddr[-2:]    #获取E9
plus_one = int(last_two, 16) + 1 #将E9转化为10进制233,然后+1,变为234
new_last_two = hex(plus_one)[-2:]   #新的mac最后两位将234转换为16进制ea
new_mac = prefix_mac + ':' + new_last_two #新的mac地址是 A4:BA:DB:20:93 + ':' + ea
print new_mac.upper()  #打印新的mac地址A4:BA:DB:20:93:ea并且转换为大写A4:BA:DB:20:93:EA

[root@133 filevalue]# python mac.py 
A4:BA:DB:20:93:EA




[root@133 filevalue]# vim mac.py 

#!/usr/bin/python

macaddr = "A5:BA:DB:20:93:03"
prefix_mac = macaddr[:-3]
print prefix_mac
last_two = macaddr[-2:]
print last_two
plus_one = int(last_two, 16) + 1
print plus_one
if plus_one in range(10):
    new_last_two = hex(plus_one)[2:]
    print new_last_two
    new_last_two = '0' + new_last_two
else:
    new_last_two = hex(plus_one)[2:]
    print new_last_two
    if len(new_last_two) == 1:
        new_last_two = '0' + new_last_two
        print new_last_two
new_mac = prefix_mac  + ':' +  new_last_two
print new_mac.upper()

[root@133 filevalue]# python mac.py 
A5:BA:DB:20:93  
03   最后两位是03,转换为10进制是4
4    把4转换为16进制是4
4    在4前面加上0
A5:BA:DB:20:93:04



[root@133 filevalue]# vim mac.py 

#!/usr/bin/python

macaddr = "A5:BA:DB:20:93:0a"
prefix_mac = macaddr[:-3]
print prefix_mac
last_two = macaddr[-2:]
print last_two
plus_one = int(last_two, 16) + 1
print plus_one
if plus_one in range(10):
    new_last_two = hex(plus_one)[2:]
    print new_last_two
    new_last_two = '0' + new_last_two
else:
    new_last_two = hex(plus_one)[2:]
    print new_last_two
    if len(new_last_two) == 1:
        new_last_two = '0' + new_last_two
        print new_last_two
new_mac = prefix_mac  + ':' +  new_last_two
print new_mac.upper()

[root@133 filevalue]# python mac.py 
A5:BA:DB:20:93 
0a  对应10进制的10,加1是11
11  11对应16进制的b
b   注意:这里少了0,
0b  加一个0,变成0b,然后用upper变成0B
A5:BA:DB:20:93:0B


列表和字符串的转换


字符串转列表

In [22]: s = 'abc'

In [23]: list(s)      #list(s)将字符串s转换为list列表
Out[23]: ['a', 'b', 'c']

In [24]: l = list(s)  #定义list l

In [25]: l            #查看list l
Out[25]: ['a', 'b', 'c']

In [26]: '.'.join(l)  #使用join的方法将list的l格式化
Out[26]: 'a.b.c'

In [27]: a = 'a'      

In [28]: help(a.join)
Help on built-in function join:

join(...)
    S.join(iterable) -> string
    
    Return a string which is the concatenation of the strings in the
    iterable.  The separator between elements is S. #S是分隔符,这里用的是.
(END) 
 
In [32]: ' '.join(l)  #用空字符做分隔符
Out[32]: 'a b c'

字符串转元祖(与字符串转列表方法一样)

In [33]: s
Out[33]: 'abc'

In [34]: s = 'abc'

In [35]: tuple(s)
Out[35]: ('a', 'b', 'c')

In [36]: t = tuple(s)

In [37]: t
Out[37]: ('a', 'b', 'c')

In [38]: '.'.join(t)
Out[38]: 'a.b.c'

In [39]: '  '.join(t)
Out[39]: 'a  b  c'


列表和元祖的互相转换

In [41]: l
Out[41]: ['a', 'b', 'c']

In [42]: tuple(l)        #tuple()函数将列表l转换为元祖tuple
Out[42]: ('a', 'b', 'c')

In [43]: t
Out[43]: ('a', 'b', 'c')

In [44]: list(t)        #list()函数将元祖t转换为列表list
Out[44]: ['a', 'b', 'c']


字典转换为列表

In [46]: dic
Out[46]: {'a': 1, 'b': 2}

In [47]: dic.items()     #dic.items()函数将字典转换为组成的列表,列表元素是元祖,元祖是字典中的key和value的对应关系
Out[47]: [('a', 1), ('b', 2)]


将列表转换为字典(前提条件是:列表内的元祖是由两个元素组成的,key和value)

In [48]: l1 = dic.items()

In [49]: l1
Out[49]: [('a', 1), ('b', 2)]

In [50]: dict(l1)  #使用dict(l1)函数将列表转换为字典
Out[50]: {'a': 1, 'b': 2}