亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何在python中對二進制文件進行轉譯

發布時間:2021-02-26 15:35:54 來源:億速云 閱讀:206 作者:戴恩恩 欄目:開發技術

這篇文章主要介紹了如何在python中對二進制文件進行轉譯,此處通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考價值,需要的朋友可以參考下:

python是什么意思

Python是一種跨平臺的、具有解釋性、編譯性、互動性和面向對象的腳本語言,其最初的設計是用于編寫自動化腳本,隨著版本的不斷更新和新功能的添加,常用于用于開發獨立的項目和大型項目。

首先導入所需的包:import struct

struct有以下幾個主要的函數:

# 按照給定的格式(fmt),把數據封裝成字符串(實際上是類似于c結構體的字節流)
pack(fmt, v1, v2, ...)
# 按照給定的格式(fmt)解析字節流string,返回解析出來的tuple
unpack(fmt, string) 
# 計算給定的格式(fmt)占用多少字節的內存
calcsize(fmt)

例如:我需要讀取一個名為filename,存放著形狀為[100,1025]的浮點數的文件。可以采用以下辦法

import numpy as np
import struct 
# 加載測試數據
f = open('filename','rb')
# 102500為文檔中包含的數字個數,而一個浮點數占4個字節
data_raw = struct.unpack('f'*102500,f.read(4*102500))
f.close()
verify_data = np.asarray(verify_data_raw).reshape(-1,1025)

同理如果想轉把二進制轉成double型:

import numpy as np
import struct
f = open('data8.dat','rb')
d_str = f.read()
f.close()
d_len = len(d_str)
d_len2 = d_len//8
#有時還需考慮字節順序,如為big-endian,則以上語句改為 data = struct.unpack('>'+str(d_len/4)+'f',d_str)
data = struct.unpack(d_len2*'d',d_str)

注意:fmt前的數字必須為int型,即int*'d' 否則會報‘can't multiply sequence by non-int of type 'float'' 的錯誤

具體函數細節請查詢  struct官方文檔

下面提供了了fmt表示方法

FORMATPYTHON TYPESTANDARD SIZE
xno value
cstring of length 11
binteger1
Binteger1
?bool1
hinteger2
Hinteger2
iinteger4
Iinteger4
linteger4
Linteger4
qinteger8
Qinteger8
ffloat4
dfloat8
sstring
pstring
Pinteger

為了同c中的結構體交換數據,還要考慮有的c或c++編譯器使用了字節對齊,通常是以4個字節為單位的32位系統,故而struct根據本地機器字節順序轉換.可以用格式中的第一個字符來改變對齊方式.定義如下:

CHARACTERBYTE ORDERSIZEALIGNMENT
@nativenativenative
=nativestandardnone
<little-endianstandardnone
>big-endianstandardnone
!network (= big-endian)standardnone

< : Little-Endian就是低位字節排放在內存的低地址端(棧頂),高位字節排放在內存的高地址端(棧底)

>:Big-Endian就是高位字節排放在內存的低地址端,低位字節排放在內存的高地址端。

到此這篇關于如何在python中對二進制文件進行轉譯的文章就介紹到這了,更多相關如何在python中對二進制文件進行轉譯的內容請搜索億速云以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持億速云!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

江油市| 邵武市| 金昌市| 新兴县| 海城市| 阳泉市| 周宁县| 临城县| 甘孜县| 澄迈县| 屏东市| 牟定县| 新竹市| 永寿县| 庆城县| 星座| 辽宁省| 宁都县| 龙门县| 商南县| 阿拉善左旗| 高密市| 融水| 丰城市| 历史| 肃南| 来宾市| 中宁县| 通河县| 冀州市| 西安市| 六枝特区| 宜宾县| 石嘴山市| 金寨县| 邵武市| 黄石市| 吉木萨尔县| 枞阳县| 石柱| 平定县|