日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

十六进制文件读取并转换成二进制文件

發布時間:2023/12/14 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 十六进制文件读取并转换成二进制文件 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在語音識別,數據傳輸等多方面領域通常會出現文件為我們不想要的進制,這個時候就可以用python強悍的數據處理能力來幫助我們。

第一步就是讀取文件,這里以十六進制示例

all_data = [] for path in self.bin_path: with open(path, 'r') as f: for i in f.readlines(): all_data.append(i.strip('\n'))

(溫馨提示:python在打開文件時自帶二進制文件打開模式,如果源文件是二進制形式將使工作減少很多)

第二部數據處理

with open(out_txt_path, 'a') as new_f: for i in all_data: i = i.strip() B_i = eval(f"b'{i}'") each = bin(int(str(''.join(["%02X" % x for x in B_i]).strip()), 16))[2:]new_f.write(str(each) + '\n') print(f'{out_txt_path}: is done')

在這里注意一下,十六進制數據有的長這樣

\x00\x80\x02\x00\x00\xe0\x01\x00\x00\x00\xb0\x04\x00\xf8\x12\xf1

有的長這樣

12A32B

當然下面這種最好處理了,甚至用python自帶的int都可以轉換(其實其他進制也可以通過int轉換)

但是如果是上面那種,就需要處理了

其中在處理這個問題的時候我遇到一個難題。

with open(path, 'r') as f:

在讀取文件時,讀取出來的是字符串str,而''.join(["%02X" % x for x in B_i]必須是bytes形式,即b''(帶有b開頭的字符串),但是在轉成bytes的過程中總是出錯,最后想起python還有eval()這個高級東西,于是毫不猶豫的用上,直接成功。

條條道路通羅馬,是吧

總結

以上是生活随笔為你收集整理的十六进制文件读取并转换成二进制文件的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。