摘要:簡介模塊主要在中的值于語言結(jié)構(gòu)之間的轉(zhuǎn)換。可用于處理存儲(chǔ)在文件或網(wǎng)絡(luò)連接或其它來源中的二進(jìn)制數(shù)據(jù)。順序格式字符現(xiàn)在先不要看圖表,稍后我們回來看。圖片來自官網(wǎng)例子用例子說明效果是最好的,我們用特定格式往二進(jìn)制文件里寫入數(shù)據(jù),然后再讀出數(shù)據(jù)。
簡介
python strtuct模塊主要在Python中的值于C語言結(jié)構(gòu)之間的轉(zhuǎn)換。可用于處理存儲(chǔ)在文件或網(wǎng)絡(luò)連接(或其它來源)中的二進(jìn)制數(shù)據(jù)。
順序、格式字符現(xiàn)在先不要看圖表,稍后我們回來看。圖片來自Python官網(wǎng)
用例子說明效果是最好的,我們用特定格式往二進(jìn)制文件里寫入數(shù)據(jù),然后再讀出數(shù)據(jù)。
#! usr/bin/env python3 # -*- conding:utf-8 -*- import struct """ 數(shù)據(jù)格式 名字 職業(yè) 年 muyu coder 2018 """ name = b"muyu" job = b"coder" year = 2018 file = open(r"C:UsersmatzohDesktop est.bin", "rb+") file.write(struct.pack("4s5si", name, job, year)) file.flush() file.seek(0) strBin = file.read() print(strBin) # b"muyucoderx00x00x00xe2x07x00x00" content = struct.unpack("4s5si", strBin) print(content) # (b"muyu", b"coder", 2018)
上述代碼的含義就是,以二進(jìn)制格式打開一個(gè)文件,以指定格式寫入一個(gè)二進(jìn)制串,再從文件取出二進(jìn)制串,再把取出的串翻譯成python數(shù)據(jù)struct 最常用的方法有兩個(gè):
struct.pack(fmt,v1,v2,…)
返回的是一個(gè)字符串,是參數(shù)按照fmt數(shù)據(jù)格式組合而成struct.unpack(fmt,string)
按照給定數(shù)據(jù)格式解開(通常都是由struct.pack進(jìn)行打包)數(shù)據(jù),返回值是一個(gè)tuple
兩個(gè)方法的第一個(gè)參數(shù)都是fmt,fmt就是上面的兩個(gè)表格,我們根據(jù)實(shí)際內(nèi)容(具體需求)寫出fmt串,讀取或?qū)懭胛募?/p>
文中我們的fmt串是4s5si,具體含義對照上面表格:
4s表示4字節(jié)的字符串(可能我們會(huì)遇到整數(shù)計(jì)數(shù),例如5h,意思是5個(gè)相同的h,意思和4s并不一樣)上述代碼運(yùn)行結(jié)果:
5s含義同4s i表示整數(shù)(有符號(hào))
具體解釋官方文檔也有
b"muyucoderx00x00x00xe2x07x00x00" (b"muyu", b"coder", 2018)
記錄自己的學(xué)習(xí)筆記,好記性不如爛筆頭(而且還不是好記性...)
拓展看完本篇文章,有興趣的可以看:struct(廖雪峰)這篇文章,文章講怎么從bmp文件中讀取內(nèi)容
感謝學(xué)習(xí)Python主要在:廖雪峰的官方網(wǎng)站、菜鳥教程這兩個(gè)網(wǎng)站學(xué)習(xí),很感謝他們!
也很感謝其他樂于分享貢獻(xiàn)知識(shí)經(jīng)驗(yàn)的人,謝謝
原文在自己的小博客:木魚博客
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/44656.html
摘要:如我們有字符串,如何將它轉(zhuǎn)換為對象呢的用法的作用是格式化時(shí)間格式,使其按照我們想要的格式來顯示。如下例,先將字符串解析為對象,然后在格式化時(shí)間輸出,將其輸出按照的格式輸出。 datetime簡介 datetime和time的區(qū)別 time在 Python 文檔里,time是歸類在Generic Operating System Services中,換句話說, 它提供的功能是更加接近于操...
摘要:調(diào)用以回調(diào)函數(shù)地址為參數(shù)的函數(shù)這個(gè)主題就稍微繞一些了,也就是說在接口中,需要傳入回調(diào)函數(shù)作為參數(shù)。這個(gè)問題在中也可以解決,并且回調(diào)函數(shù)可以用定義。代碼代碼很簡單回調(diào)函數(shù)的傳入?yún)?shù)為,返回參數(shù)也是。 項(xiàng)目中要對一個(gè)用 C 編寫的 .so 庫進(jìn)行邏輯自測。這項(xiàng)工作,考慮到靈活性,我首先考慮用 Python 來完成。 研究了一些資料,采用 python 的 ctypes 來完成這項(xiàng)工作。已經(jīng)...
摘要:是否則檢驗(yàn)指定的對象是否存在。由于的模塊實(shí)現(xiàn)主要調(diào)用庫,所以各個(gè)平臺(tái)可能有所不同。時(shí)間格式時(shí)間戳的方式通常來說,時(shí)間戳是指格林威治時(shí)間年月日時(shí)分秒北京時(shí)間年月日時(shí)分秒起至現(xiàn)在的總秒數(shù)。元組方式元組共有個(gè)元素,返回的函數(shù)主要有,,。 os模塊 os模塊提供了多數(shù)操作系統(tǒng)的功能接口函數(shù)。當(dāng)os模塊被導(dǎo)入后,它會(huì)自適應(yīng)于不同的操作系統(tǒng)平臺(tái),根據(jù)不同的平臺(tái)進(jìn)行相應(yīng)的操作,在python編程時(shí),...
摘要:在這里我分享下我個(gè)人入門機(jī)器學(xué)習(xí)的經(jīng)歷,希望能對大家能有所幫助。相關(guān)學(xué)習(xí)鏈接,,入門后的體驗(yàn)在入門了機(jī)器學(xué)習(xí)之后,在實(shí)際工作中,絕大多數(shù)的情況下你并不需要去創(chuàng)造一個(gè)新的算法。 機(jī)器學(xué)習(xí)在很多眼里就是香餑餑,因?yàn)闄C(jī)器學(xué)習(xí)相關(guān)的崗位在當(dāng)前市場待遇不錯(cuò),但同時(shí)機(jī)器學(xué)習(xí)在很多人面前又是一座大山,因?yàn)榘l(fā)現(xiàn)它太難學(xué)了。在這里我分享下我個(gè)人入門機(jī)器學(xué)習(xí)的經(jīng)歷,希望能對大家能有所幫助。 PS:這篇文章...
閱讀 1295·2021-10-08 10:04
閱讀 1922·2021-09-04 16:40
閱讀 2536·2019-08-30 13:21
閱讀 2280·2019-08-29 15:10
閱讀 2848·2019-08-29 12:35
閱讀 1189·2019-08-26 17:41
閱讀 3062·2019-08-26 17:03
閱讀 1136·2019-08-26 12:01