国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Python3按一定數據位數格式處理bin文件的方法

2020-02-16 00:52:40
字體:
來源:轉載
供稿:網友

因為研究生階段經常用MATLAB作圖,處理數據,但是MATLAB太過于龐大,不方便,就想用python處理。

問題:我們通常處理的最原始的數據是bin文件,打開后如下所示,是按16進制形式存儲的。

Python3按一定數據位數格式處理bin文件

MATLAB處理時,是按照如下方式讀取前10個數,int32數據格式,上圖中的紅色圈表示MATLAB讀取的一個數據,前10個數據表示元數據。

Python3按一定數據位數格式處理bin文件

MATLAB讀取的前10個數據的結果:

Python3按一定數據位數格式處理bin文件

而Python中似乎沒有可以在指定數據格式位數下讀取bin文件中數據,例如想以python中的read()讀取時,圖一中的藍線所圈的表示一個數據,圖中圈了兩個數據。用以下程序讀取MATLAB所讀取的10各數據,則需要讀40個。

Python3按一定數據位數格式處理bin文件

結果如下:也是16進制

Python3按一定數據位數格式處理bin文件

每隔三個數據對應時MATLAB讀取的數據。

想到用struct包里面的unpack函數解決問題,可以可惜的時python中unpack不支持float32,也不支持int32,所以上面在用python讀取數據時,不能以32位讀取,最多以8位讀,從而python挨個讀取時一個藍線圈里的數據。

# 按照給定的格式(fmt)解析字節流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)

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 固阳县| 德格县| 灵台县| 阳信县| 鸡泽县| 仪陇县| 黑山县| 海兴县| 郴州市| 施甸县| 达尔| 安泽县| 高唐县| 大英县| 南华县| 邛崃市| 余干县| 肇源县| 葵青区| 西安市| 铅山县| 英山县| 晋江市| 达日县| 房山区| 吉水县| 汉中市| 定陶县| 永川市| 黄梅县| 宁阳县| 星子县| 新乡县| 涟源市| 炎陵县| 佳木斯市| 崇义县| 罗江县| 柞水县| 陆良县| 民和|