python——进制转换
2014-08-15 20:48
706 查看
今天做一道题需要写一个二进制转换成十六进制的脚本,由于初学python不甚了解,于是百度尝试着写,现总结如下:
首先python中没有二进制直接转换成十六进制的函数,需要先将二进制转换成十进制然后再转换成十六进制。于是先来看二进制转换成十进制:
python中的int()除了能把其他类型的数据转换成数字类型,还有一个用法:
int(string,base):其中string代表一个字符串(实际上是一个数字字符串),base是一个数,代表string代表的这个数是几进制【注意:不是要转换成几进制,而是数本身是几进制】;整个函数的功能就是讲string代表的数字转换成十进制。因此,有了这个函数,二进制转换成十进制就很简单,代码如下:
同理,可以写出其他进制转换成十进制的形式:
我自己写的代码如下:
我的代码很简单就不解释了,要注意的一点就是求得h1后,反转后才得到十六进制字符串。
这里要注意字符串反转的技巧:
str1=“abcdef”
str2=str1[::-1]
这样str2就是fedcba
从网上找的代码:
首先定义了一个字符串base='0123456789ABCDEF',原来for循环还可以这样用。
然后定义了一个空的列表。然后来看一下divmod(num1,num2)这个函数:返回一个tuple,(div,mod)【(商,余数)】,求出余数之后追加到mid后面。
最后反转字符串,返回。
此处要讲一讲join函数:
join(list)中的参数是一个列表,使用方法:
>>> a=['hello','world']
>>> '?'.join(a) //这里是用问号连接
'hello?world'
>>> ','.join(a) //这里用逗号连接
'hello,world'
>>> ';'.join(a) //这里用分号连接
'hello;world'
到此二进制转换成十六进制就写完了,附上全部的代码:
首先python中没有二进制直接转换成十六进制的函数,需要先将二进制转换成十进制然后再转换成十六进制。于是先来看二进制转换成十进制:
python中的int()除了能把其他类型的数据转换成数字类型,还有一个用法:
int(string,base):其中string代表一个字符串(实际上是一个数字字符串),base是一个数,代表string代表的这个数是几进制【注意:不是要转换成几进制,而是数本身是几进制】;整个函数的功能就是讲string代表的数字转换成十进制。因此,有了这个函数,二进制转换成十进制就很简单,代码如下:
<span style="font-size:18px;color:#ff0000;"># 二进制 to 十进制 def bin_to_dec(string_num): return str(int(string_num, 2)) # int(string_num,2)的意思是string_num是一个二进制数字,将其用十进制表示出来。</span>
同理,可以写出其他进制转换成十进制的形式:
<span style="font-size:18px;color:#ff0000;"># 十六进制 to 十进制 def hex_to_dec(string_num): return str(int(string_num, 16)) # 八进制 to 十进制 def oct_to_dec(string_num): return str(int(string_num,8))</span>然后:第二步写十进制转换成十六进制:
我自己写的代码如下:
<span style="font-size:18px;color:#ff0000;"># 十进制 to 十六进制 def dec_to_hex(string_num): d=int(string_num) h1='' h2='' m = d while(m != 0): r = m % 16 m = m // 16 if r == 10: h1 = h1 + 'A' elif r == 11: h1 = h1 + 'B' elif r == 12: h1 = h1 + 'C' elif r == 13: h1 = h1 + 'D' elif r == 14: h1 = h1 + 'E' elif r == 15: h1 = h1 + 'F' else: h1 = h1 + str(r) h2 = h1[::-1] #这要注意:将字符串反转过来才是十六进制数 return h2</span>
我的代码很简单就不解释了,要注意的一点就是求得h1后,反转后才得到十六进制字符串。
这里要注意字符串反转的技巧:
str1=“abcdef”
str2=str1[::-1]
这样str2就是fedcba
从网上找的代码:
<span style="font-size:18px;color:#ff0000;">base = [str(x) for x in range(10)] + [ chr(x) for x in range(ord('A'),ord('A')+6)] </span>
<span style="font-size:18px;color:#ff0000;">def dec2hex(string_num): num = int(string_num) mid = [] while True: if num == 0: break num,rem = divmod(num, 16) mid.append(base[rem]) return ''.join([str(x) for x in mid[::-1]])</span>一下感觉高大上了,来解释下:
首先定义了一个字符串base='0123456789ABCDEF',原来for循环还可以这样用。
然后定义了一个空的列表。然后来看一下divmod(num1,num2)这个函数:返回一个tuple,(div,mod)【(商,余数)】,求出余数之后追加到mid后面。
最后反转字符串,返回。
此处要讲一讲join函数:
join(list)中的参数是一个列表,使用方法:
>>> a=['hello','world']
>>> '?'.join(a) //这里是用问号连接
'hello?world'
>>> ','.join(a) //这里用逗号连接
'hello,world'
>>> ';'.join(a) //这里用分号连接
'hello;world'
到此二进制转换成十六进制就写完了,附上全部的代码:
<span style="font-size:18px;color:#ff0000;"># -*- coding: utf-8 -*- import os,sys # global definition # base = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F] base = [str(x) for x in range(10)] + [ chr(x) for x in range(ord('A'),ord('A')+6)] # 二进制 to 十进制 def bin_to_dec(string_num): return str(int(string_num, 2)) # int(string_num,2)的意思是string_num是一个二进制数字,将其用十进制表示出来。 # 十六进制 to 十进制 def hex_to_dec(string_num): return str(int(string_num, 16)) # 八进制 to 十进制 def oct_to_dec(string_num): return str(int(string_num,8)) # 十进制 to 十六进制(法一) def dec_to_hex(string_num): d=int(string_num) h1='' h2='' m = d while(m != 0): r = m % 16 m = m // 16 if r == 10: h1 = h1 + 'A' elif r == 11: h1 = h1 + 'B' elif r == 12: h1 = h1 + 'C' elif r == 13: h1 = h1 + 'D' elif r == 14: h1 = h1 + 'E' elif r == 15: h1 = h1 + 'F' else: h1 = h1 + str(r) h2 = h1[::-1] return h2 # 十进制 to 十六进制(法二) def dec2hex(string_num): num = int(string_num) mid = [] while True: if num == 0: break num,rem = divmod(num, 16) mid.append(base[rem]) return ''.join([str(x) for x in mid[::-1]]) if __n 9ab6 ame__=='__main__': s1 = bin_to_dec("110011011010") s2 = dec2hex(s1) s3 = dec_to_hex(s1) print(s2+'\n') print(s3)</span>
相关文章推荐
- Python内置函数bin() oct()等实现进制转换
- Python中数值和进制转换
- Python常用用法(进制转换和时间)
- 用Python解一元二次方程以及进制转换
- Python各种数据进制转换
- Python进制转换
- Python第五天(进制转换)
- python 各进制转换
- Python进制转换
- Python进制转换
- python进制转换
- 【Python】Python实现进制转换(二进制、十进制和十六进制)及注意事项
- python中的进制转换
- python 进制转换[转]
- Python进制转换(二进制、十进制和十六进制)
- python模块介绍- binascii:二进制和ASCII互转 以及其他进制转换
- python中的进制转换
- python实现进制转换
- python的进制转换二进制,八进制,十六进制及其原理
- python(42):进制转换