Python3按一定數(shù)據(jù)位數(shù)格式處理bin文件的方法
因為研究生階段經(jīng)常用MATLAB作圖,處理數(shù)據(jù),但是MATLAB太過于龐大,不方便,就想用python處理。
問題:我們通常處理的最原始的數(shù)據(jù)是bin文件,打開后如下所示,是按16進制形式存儲的。
MATLAB處理時,是按照如下方式讀取前10個數(shù),int32數(shù)據(jù)格式,上圖中的紅色圈表示MATLAB讀取的一個數(shù)據(jù),前10個數(shù)據(jù)表示元數(shù)據(jù)。
MATLAB讀取的前10個數(shù)據(jù)的結(jié)果:
而Python中似乎沒有可以在指定數(shù)據(jù)格式位數(shù)下讀取bin文件中數(shù)據(jù),例如想以python中的read()讀取時,圖一中的藍線所圈的表示一個數(shù)據(jù),圖中圈了兩個數(shù)據(jù)。用以下程序讀取MATLAB所讀取的10各數(shù)據(jù),則需要讀40個。
結(jié)果如下:也是16進制
每隔三個數(shù)據(jù)對應(yīng)時MATLAB讀取的數(shù)據(jù)。
想到用struct包里面的unpack函數(shù)解決問題,可以可惜的時python中unpack不支持float32,也不支持int32,所以上面在用python讀取數(shù)據(jù)時,不能以32位讀取,最多以8位讀,從而python挨個讀取時一個藍線圈里的數(shù)據(jù)。
# 按照給定的格式(fmt)解析字節(jié)流string,返回解析出來的tuple
unpack(fmt, string)
string類似于:\x00\x00\x00\x0c\x00\x00\x00\x18\x00\x00\x00\x00\x00\x00\x00]\x00\x00\x00\x0c\x00\x00\x00\x08\x00\x00\x00\t\x00\x00
FORMAT | C TYPE | PYTHON TYPE | STANDARD SIZE | NOTES |
---|---|---|---|---|
x | pad byte | no value | ||
c | char | string of length 1 | 1 | |
b | signed char | integer | 1 | (3) |
B | unsigned char | integer | 1 | (3) |
? | _Bool | bool | 1 | (1) |
h | short | integer | 2 | (3) |
H | unsigned short | integer | 2 | (3) |
i | int | integer | 4 | (3) |
I | unsigned int | integer | 4 | (3) |
l | long | integer | 4 | (3) |
L | unsigned long | integer | 4 | (3) |
q | long long | integer | 8 | (2), (3) |
Q | unsigned long long | integer | 8 | (2), (3) |
f | float | float | 4 | (4) |
d | double | float | 8 | (4) |
s | char[] | string | ||
p | char[] | string | ||
P | void * | integer |
(5), (3) |
個人覺得python這方面做的沒有matlab好,
所以python不能以類似于MATLAB中fread(f,N,int32)或者fread(f,N,real*4)的方式讀取上圖中的字符流,也無法解析。
以上這篇Python3按一定數(shù)據(jù)位數(shù)格式處理bin文件的方法就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Python爬蟲實現(xiàn)抓取京東店鋪信息及下載圖片功能示例
這篇文章主要介紹了Python爬蟲實現(xiàn)抓取京東店鋪信息及下載圖片功能,涉及Python頁面請求、響應(yīng)、解析等相關(guān)操作技巧,需要的朋友可以參考下2018-08-08Python批量將Word文件轉(zhuǎn)為PDF文件的實現(xiàn)示例
如果想要批量把Word文檔轉(zhuǎn)換為PDF文檔,我們可以使用第三方模塊win32com,本文就來詳細的介紹一下Python批量將Word文件轉(zhuǎn)為PDF文件的實現(xiàn)示例,感興趣的可以了解一下2023-08-08淺談django model postgres的json字段編碼問題
下面小編就為大家分享一篇淺談django model postgres的json字段編碼問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-01-01PyTorch開源圖像分類工具箱MMClassification詳解
MMClassification是一款基于PyTorch的開源圖像分類工具箱,集成了常用的圖像分類網(wǎng)絡(luò),將數(shù)據(jù)加載,模型骨架,訓(xùn)練調(diào)參,流程等封裝為模塊調(diào)用,便于在模型間進行轉(zhuǎn)換和比較,也高效簡潔的實現(xiàn)了參數(shù)調(diào)整2022-09-09