Python入门:字符转换为二进制及进制之间转换

来源:互联网 发布:域名是啥意思 编辑:程序博客网 时间:2024/06/14 08:13

字符、进制之间的转换关系

python3.5
1、python中的ord及chr函数指的就是通常意义的unicode,即2个字节
2、UTF-8是1-6个字节的可变长编码方式,常用的英文字母被编码成1个字节,汉字通常是3个字节,只有很生僻的字符才会被编码成4-6个字节

自定义转换函数

#NumOctHex.py#自己写一个模块NumOctHex.py,包含8、10、16转换成2进制'''str_num的类型必需是可被str转换的整数,如:‘111’、‘123’16进制中str_num可以是‘123456789abcdef’,且必须是0-9及a-f之间8进制中str_num可以是‘1234567’,且必须是0-7之间的数''''''系统自带的转换方法都是通过10进制进行转换的,下面的三个函数是通过将8、10、16转换成2进制'''#十六进制to二进制def hex2bin(str_num):    num = int(str_num,16)       #如果是10进制转换二进制,只需要将此处的16删除,或改或10while True:
        if num == 0: break
        bit.append(str(rem))

    return ''.join(bit[::-1])#十进制to二进制def dec2bin(str_num):    num = int(str_num,8)    bit = []    while True:        if num == 0: break        num,rem = divmod(num,2)        bit.append(str(rem))    return ''.join(bit[::-1])#八进制to二进制def oct2bin(str_num):    num = int(str_num,8)    bit = []    while True:        if num == 0: break        num,rem = divmod(num,2)        bit.append(str(rem))    return ''.join(bit[::-1])

运行结果

'''下面两句是一样的str(obj,encoding=‘utf-8’,errors=‘strict’)''.encode(encoding=‘utf-8’,errors=‘strict’)'''#使用ord的二进制值,即2个字节的unicodeIn[70]: ord('中')Out[70]: 20013In[73]: dec2bin(str(ord('中')))Out[73]: '100111000101101'#使用utf-8的二进制值,即可变长的unicodeIn[75]: dec2bin(str('中'.encode('utf-8').hex()))Out[75]: '111001001011100010101101'
#以上函数有重复造轮子的嫌疑In[15]: '中'.encode()    #先转换成16进制的bytesOut[15]: b'\xe4\xb8\xad'In[16]: '中'.encode().hex()  #然后去除16进制的标识'b'和'\x'Out[16]: 'e4b8ad'In[17]: int('中'.encode().hex(),16)  #16进制转换成10进制Out[17]: 14989485In[18]: bin(int('中'.encode().hex(),16)) #10进制转换成2进制Out[18]: '0b111001001011100010101101'#以上是中文字符转换成2进制的方法##################################################

1、num必须是带双引号的,可表示对应数值的字符
int(num,2)=========>将2进制转换成10进制【不能出现0、1以外的字符】
int(num,8)=========>将8进制转换成10进制【不能出现0-7以外的字符】
int(num,16)=========>将16进制转换成10进制【不能出现0-9和a-f以外的字符】
2、num是10进制的字数
bin(num)=========>将10进制转换成2进制【不能出现0-9以外的字符】
oct(num)=========>将10进制转换成8进制【不能出现0-9以外的字符】
hex(num)=========>将10进制转换成16进制【不能出现0-9以外的字符】
这里写图片描述

进制计算

10进制 16进制 8进制 25 2*16 + 5 2*8 + 5

1、10进制中的一位对应8进制中的三位,然后用二进制进行填位;
2、10进制中的一位对应16进制中的四位,然后用二进制进行填位;

10进制 2——-5 16进制 0000—-0000 【0010 0101】 【37】 8进制 000—–000 【010 101】 【21】
1 0
原创粉丝点击