精品专区-精品自拍9-精品自拍三级乱伦-精品自拍视频-精品自拍视频曝光-精品自拍小视频

網(wǎng)站建設(shè)資訊

NEWS

網(wǎng)站建設(shè)資訊

如何在python中對二進制文件進行轉(zhuǎn)譯-創(chuàng)新互聯(lián)

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

創(chuàng)新互聯(lián)公司主要從事成都網(wǎng)站設(shè)計、網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)安溪,十載網(wǎng)站建設(shè)經(jīng)驗,價格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):028-86922220python是什么意思

Python是一種跨平臺的、具有解釋性、編譯性、互動性和面向?qū)ο蟮哪_本語言,其最初的設(shè)計是用于編寫自動化腳本,隨著版本的不斷更新和新功能的添加,常用于用于開發(fā)獨立的項目和大型項目。

首先導(dǎo)入所需的包:import struct

struct有以下幾個主要的函數(shù):

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

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

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

同理如果想轉(zhuǎn)把二進制轉(zhuǎn)成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
#有時還需考慮字節(jié)順序,如為big-endian,則以上語句改為 data = struct.unpack('>'+str(d_len/4)+'f',d_str)
data = struct.unpack(d_len2*'d',d_str)

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

具體函數(shù)細(xì)節(jié)請查詢  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中的結(jié)構(gòu)體交換數(shù)據(jù),還要考慮有的c或c++編譯器使用了字節(jié)對齊,通常是以4個字節(jié)為單位的32位系統(tǒng),故而struct根據(jù)本地機器字節(jié)順序轉(zhuǎn)換.可以用格式中的第一個字符來改變對齊方式.定義如下:

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

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

>:Big-Endian就是高位字節(jié)排放在內(nèi)存的低地址端,低位字節(jié)排放在內(nèi)存的高地址端。

到此這篇關(guān)于如何在python中對二進制文件進行轉(zhuǎn)譯的文章就介紹到這了,更多相關(guān)如何在python中對二進制文件進行轉(zhuǎn)譯的內(nèi)容請搜索創(chuàng)新互聯(lián)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持創(chuàng)新互聯(lián)!


分享名稱:如何在python中對二進制文件進行轉(zhuǎn)譯-創(chuàng)新互聯(lián)
鏈接地址:http://m.jcarcd.cn/article/cooijo.html
主站蜘蛛池模板: 国产精品中文字幕组 | 福利导航视频在线 | 91青青草原 | 日本三级在线看观 | 成人拍拍拍社区 | 欧美亚洲男人的天堂 | 成人播播网 | 日韩高清免费 | 蜜臀tv | 区二区网站视频 | 日本在看精品网人 | 国产免费艾 | 成人三级电 | 91aiai| 三级高清在线 | 国产熟女熟女 | 国产香蕉尹人视频在 | 人人摸人人干 | 日韩成人xxxx | 国产一区二区寻花 | 国产人兽网址 | 日韩在线观看精品 | 国产一区丝袜高 | 国产精品福利电影一 | 国产精品在线观看 | 日本成人精品一区 | 国产黑料导航网福利 | 国产免费一区二区 | 奇米影视77 | 中文字幕一冢本 | 飘雪影院手机免 | 日韩字幕欧美 | 国产精品偷伦视频免 | 成人一区免费看 | 国产区第一页 | 国产精品国色综 | 日韩专区+ | 国产网站一区二 | 日本在线一区 | 日本成人诱惑网站 | 日韩欧美在线综合 |