Python中字符串和二進制互轉

Python中字符串和二進制互轉

        最近在搞圖形相關的東西,有時候操作涉及到每個 比特 的操作,所以必須實現一個方法(將字符串二值化),就是把字符串轉換成爲二進制形式。搜索了一些相關的實現,但是本篇只對兩種進行介紹,並且個人推薦第二種。
        第一種實現方式,使用bitarray庫實現


		from bitarray import bitarray

		def str2bitarray(s):
    		ret = bitarray(''.join([bin(int('1' + hex(c)[2:], 16))[3:] for c in s.encode('utf-8')]))
    		return ret

		def bitarray2str(bit):
    		return bit.tobytes().decode('utf-8')
    

如果你的實踐能力比較強的化,在你複製或者寫上述代碼的之前應該是控制檯界面進行pip install bitarray安裝操作,但是吧,安裝執行結果如下圖所示:
在這裏插入圖片描述
        我是用的是國內的鏡像,而且這個ERROR的重點是沒有VS的C++依賴不啦不啦…,我不喜歡這種依賴性特別強的,索性放棄第一種實現。
        第二種實現方式::
爲什麼我推薦使用這種方式呢?因爲我喜歡這種儘量不安裝第三方依賴的方式,更加輕量化。
代碼實現如下:


			def encode(s):
			    return ' '.join([bin(ord(c)).replace('0b', '') for c in s])
			
			def decode(s):
			    return ''.join([chr(i) for i in [int(b, 2) for b in s.split(' ')]])
			
			var1 = encode("Hello World , 你好 世界。")
			print(var1)
			print(decode(var1))
			var1Arr = var1.split(" ")
			for i in range(len(var1Arr)):
			    print(var1Arr[i])

運行結果如下:
在這裏插入圖片描述
可以看出,這裏就是把字符轉換成了二進制類型,每個二進制類型的數據之間用空格隔開。
在這裏插入圖片描述
中文對應的二進制數據佔用兩個字節,英文佔用的是一個字節。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章