天天看點

python怎麼程式設計十進制轉化成二進制_使用python進行漢字與二進制之間的轉換

背景:最近有人給我一大堆二進制,看的我眼花缭亂,最後得知這是漢字的編碼,那肯定要轉成漢字呀,當然不排除有标點、特殊符号、英文大小寫字母等,但這些都比較簡單,主要是漢字與二進制的轉換稍微麻煩一點。最後簡單的實作了将二進制轉換成漢子的小程式,同時将漢字轉換成二進制也是及其簡單的。作為備忘,暫記于此。

基礎先行:首先需要将二進制轉換成數字,再則需要知道漢字的ASCII表和将漢字如何轉換成數字的方法,其實這裡就轉了一個彎,使用得也是比較原始的方法;根據漢字的編碼範圍,列印出漢字表。

這裡簡單實作漢字轉換成二進制,當然反過來也是很簡單的。同樣的方法。

一、各進制與數字之間的轉換

這個比較簡單,隻是一個内置函數就可以實作,如:

# 數字與二進制(bin)、八進制(oct)、十進制(int)和十六進制(hex)的轉換

>>> b=22909

>>> print('二進制bin:',bin(b))

二進制bin: 0b101100101111101

>>> print('八進制oct:',oct(b))

八進制oct: 0o54575

>>> print('十六進制hex:',hex(b),'\n')

十六進制hex: 0x597d

#可以使用int()函數将整數字元串轉換成相應的進制數>>> print(int('adfe43',16))

11402819

>>> print(int('01010101',2))

85

>>>

二、漢子到數字

#漢字轉換成數字,ord函數

>>> str = '好'

>>> print('漢字轉數字ord:',ord(str),'\n')

漢字轉數字ord: 22909

#數字到漢字,chr函數>>> int_e=22011

>>> hex_e=0x4e01

>>> bin_e=0b101100101111100

>>> print('十進制轉換成漢字:',chr(int_e))

十進制轉換成漢字: 嗻

>>> print('十六進制轉換成漢字:',chr(hex_e))

十六進制轉換成漢字: 丁

>>> print('二進制轉換成漢字:',chr(bin_e))

二進制轉換成漢字: 奼

>>>

三、如此即

#綜上,漢字轉換成二進制>>> a='好'

>>> print(format(ord(a),'b')) #101100101111101,或者

101100101111101

>>> print(bin(ord(a))) #0b101100101111101,轉換成八進制和十六進制類似

0b101100101111101

>>>四、這是多餘的#列印漢字表

>>>for ch in range(0x4e00,0x9fa6):.... print(chr(ch))

其實隻要知道漢字是從0x4e00到0x9fa6就已經足夠了。

五、另外,再附上一些:#列印大寫字母表m1=0for i in range(65,91):print(chr(i),end='')m1+=1if not m1%13:print('\n',end='')#列印小寫字母表m2=0for i in range(97,123):print(chr(i),end='')m2+=1if not m2%13:print('\n',end='')#将字元串轉換成指定的進制,預設為二進制defconvert2Sys(str,func=bin):'''str:需要進行轉換的字元串func:進制轉換函數,預設為二進制args:控制參數'''convertOne =lambdax:func(ord(x))

res=''forcinstr:

res += (convertOne(c))print(c,':',convertOne(c))returnres#将指定進制數轉換成對應的字元defconvert2Chr(str,sep=' ',base=10):'''str:各種進制形式的數字,使用字元串的形式表示,因為考慮到需要從檔案中讀取sep:分隔符,預設空格base:str的進制表示'''convertOne=lambdax:chr(x)

res=''forninstr.split(sep):

res+=convertOne(int(n,base))returnresif__name__ =='__main__':print(convert2Sys('你好',bin))print(convert2Chr('101100101111101,1100001',',',2))

###結果##############

你 : 0b100111101100000 好 : 0b101100101111101 0b1001111011000000b101100101111101 好a >>>