1. 程式人生 > >Python的struct模組

Python的struct模組

struct模組提供將二進位制資料轉換為結構化資料或相反的功能,它定義了以下函式和異常:

  • exception struct.error
  • struct.pack(fmt, v1, v2, …)
    • 返回一個string,string由v1,v2…經過給出的格式fmt組成,引數的個數有和型別要和給出的格式一一對應
  • struct.pack_into(fmt, buffer, offset, v1, v2, …)
    • 按照格式fmt將v1, v2 …打包,並從buffer的偏移量offset開始寫進buffer中
  • struct.unpack(fmt, string)
    • 以給定的格式fmt來將string解包,結果是個元組(tuple),即使結果只有一個值。fmt
      所要求的長度必須和string的長度相等
  • struct.unpack_from(fmt, buffer[, offset=0])
    • 以給定的格式fmt來將buffer解包,結果是個元組
  • struct.calcsize(fmt)
    • 返回給出格式對應的結構的長度

格式如下表:

C Type列指Foramt列字母所代表的打包資料

Python列指打包資料在python裡面表示的型別

Format C Type Python Notes
x pad byte no value
c char string of length 1
b signed char integer
B unsigned
char
integer
? _Bool bool (1)
h short integer
H unsigned short integer
i int integer
I unsigned int integer or long
l long integer
L unsigned long long
q long long long (2)
Q unsigned long long long (2)
f float float
d double float
s char[] string
p char[] string
P void * long

說明:

  • 格式字元可以以一個數字作為字首n,表示n個連續的該格式,例如4h表示hhhh
  • 在格式(formats)中間的空白字元將被忽略
  • s格式的計數n代表n個位元組長度的string,例如’10s’代表10-byte string

format的第一個字元可以標示為位元組序、對齊方式、資料型別大小等,如下表:

Character Byte order Size and alignment
@ native native
= native standard
< little-endian standard
> big-endian standard
! network (= big-endian) standard
  • 如果沒有第一個字元,則預設為@
  • native byteorder表示位元組序取決於本機系統
  • native size and alignment表示資料型別大小和對齊方式與c編譯器相關
  • standard size and alignment表示不進行任何對齊,short為2位元組,int和long為4位元組,long long為8位元組,float和 double是32bit和64bit的IEEE的浮點數,_Bool為1位元組

轉帖自:http://www.fengyj.net/blog/?p=487

相關推薦

『TensorFlow』徒手裝高達_初號機_添加訓練模組並整合為可用分類網絡

正則 basename eth enum 結構 __name__ 第一個 sce 選擇 摘要: 本次整合了前面兩節的模組,並添加向前傳播&反饋訓練部分,使之成為一個包含訓練&驗證&測試的分類網絡。 文件架構: 代碼整合: image_info.py

最全的NB-IoT芯片廠商、模組廠商信息

節點 用處 公司 網絡 模塊 不用 b- 1.3 atp NB-IoT作為LPWAN(低功耗廣域網)的新興技術,因為具有低功耗、低成本、廣覆蓋、海量節點等優勢,並且在授權頻段可以與2G、3G無縫連接而被運營商所青睞且接受。特別是到了2017年,據統計全球有50多個運營商都在

Python 函數與常用模組 - 叠代器

doc 集合 process cal (()) bin back lis () 叠代器 我們已經知道可以直接作用於 for 循環的數據類型有以下幾種: 一類是集合數據類型: list 、 tuple 、 dict 、 set 、 str 、 bytes 等。 另一類是 g

Python 函數與常用模組 - 生成器

board lin 停止 叠代 pri mod expr ner next() 生成器 什麼是列表生成式? 這個是基本的列表 >>> a = [1, 2, 3] >>> a [1, 2, 3] 也可以用另一種方式來表示 >>&

iPhone X 的原深感模組

語音助手 中國科學院 .com 測量 生活 一個 科學研究 新興 更多   物理與數字世界正走向融合,我們每天醒來的時間、睡眠時長、心率和步數等數據都會被分享、上傳並轉化為分析數據。無處不自的 AI、互聯互通和軟件平臺將改變用戶對現實的感知。    2018 年的 CES

嵌入掃描模組共享雨傘為你我撐起一片天

早已 共享 有效 解決 內嵌 附近 ofo 二維 設置 下雨了,沒帶傘,只能在地鐵眼睜睜地等著雨停?為解決市民下雨天忘帶傘的問題,地鐵推出了共享單車應用,只需手機二維碼一刷便可借傘。近日,上海地鐵引進了共享雨傘設備。有效解決了下雨天人群堵塞地鐵的問題,也為市民提供了方便,不

python--random模組(產生隨機值)、洗牌、驗證碼應用

前言: 在python中用於生成隨機數的模組是random,在使用前需要import random.random():生成一個0-1之間的隨機浮點數. random.uniform(a, b):生成[a,b]之間的浮點數. random.randi

前端模組化-5分鐘快速入門RequireJs

各位開發專案的時候引用JS都會遇到以下的情景 產生AMD規範的背景 因為使用各種外掛,或者團隊協同合作,產生多個js檔案, 假如使用的JQ外掛,則必須先引用jquery庫才能夠正常執行, JS檔案之間強依賴關係,讓我們不敢動檔案的引入順序。 並且,在渲染頁面的過程中,同步讀取JS檔案會

《JAVA併發程式設計實戰》基礎構建模組

文章目錄 同步容器類 同步容器類的問題 迭代器和ConcurrentModificationException 隱藏迭代器 併發容器 ConcurrentHashMap 額外的原子Map操作

python-random模組詳解

0.摘要 本文主要介紹random模組的各種方法,並用python3做功能展示。   1.random.random() 產生一個位於[0,1)區間的隨機數。 random.random() #產生一個[0,1)的數 10 * random.random() #產生一個

叢集環境下module載入模組與作業提交

叢集上已安裝了軟體,卻無法呼叫,許可權不足的情況下,往往管理賬戶會開放一個埠,讓我能夠只用module命令來載入相關軟體。 module使用 管理賬戶modules的安裝 sudo yum install -y environment-modules mo

[Golang] 從零開始寫Socket Server(6)【完結】:日誌模組的設計與定時任務模組模組

好久沒寫文章啦。。。今天把golang挖的這個坑給補完吧~ 作為一個Server,日誌(Log)功能是必不可少的,一個設計良好的日誌模組,不論是開發Server時的除錯,還是執行時候的維護,都是非常有幫助的。 因為這裡寫的是一個比較簡化的Server框架,因此我選擇對Golang本

(轉)Python3之shutil模組

原文:https://www.cnblogs.com/wang-yc/p/5625046.html 一. 簡介   shutil 是高階的檔案,資料夾,壓縮包處理模組。   二. 使用 shutil.copyfileobj(fsrc, fdst[, length])將檔案內容拷貝到另一個檔

python的pyserial模組

pyserial是python提供用於進行串列埠通訊的庫 源文件:https://pythonhosted.org/pyserial/ 1、安裝pyserial pip install pyserial 2、檢視電腦現連串列埠裝置 import serial.tools.list_ports #檢

Python---OS模組常用命令

Python中對於檔案操作與處理的模組有:os模組和shutil模組。 os模組不僅提供了對目錄/檔案進行:新建、刪除、檢視等操作,還提供了對檔案以及目錄的路徑操作:絕對路徑、相對路徑等。 shutil模組相當於是對os進行的一個補充,對檔案進行:移動、複製、法寶、壓縮、解壓等操作 1、

android 藍芽模組Bluetooth 使用 十六進位制資料傳送

一個藍芽模組看起來很小,弄起來還是有點複雜的,從網上找了一個示例程式碼,http://blog.csdn.net/vnanyesheshou/article/details/51554852但是不能直接用,需要自己進行閱讀理解和修改後才能使用。 先貼一張自制的uml圖: 從圖中不難看出

python os模組對檔案的操作

返回作業系統型別 os.name 返回值為posix,是linux作業系統,返回值為nt,是windows系統 返回作業系統的詳細資訊 os.uname() 系統的環境變數 os.environ 判斷是否是絕對路徑 os.path.isabs 不會判斷檔案或

pyinstaller打包資原始檔及包含eyed3模組時提示找不到libmagic處理

這兩天用python寫了個小工具,用到了eyed3,用pyinstaller打包時提示找不到libmagic 版本資訊: python 3.6.5 pyInstaller 3.4 python-magic-bin 0.4.14 eyeD3 0.88 wxpython 4.0.3 eyeD3 在Win

python___docx模組

一,docx模組 Python可以利用python-docx模組處理word文件,處理方式是面向物件的。也就是說python-docx模組會把word文件,文件中的段落、文字、字型等都看做物件,對物件進行處理就是對word文件的內容處理。 二,相關概念 如果需要讀取word文件中的文字(一般來說,程式也

量化交易入門筆記-Datetime和Time模組

Python 中,通常有三種方式用來表示時間,分別是時間戳、格式化的字串、元組(struct_time)方式 時間戳 一般來講,時間戳表示的是從1970年1月1日00:00:00開始按秒計算的偏移量。可以運用"type(time.time())",返回的是 float 。