成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

Python的Struct模塊,用法以及個人理解

Elle / 3568人閱讀

摘要:簡介模塊主要在中的值于語言結(jié)構(gòu)之間的轉(zhuǎn)換??捎糜谔幚泶鎯υ谖募蚓W(wǎng)絡(luò)連接或其它來源中的二進制數(shù)據(jù)。順序格式字符現(xiàn)在先不要看圖表,稍后我們回來看。圖片來自官網(wǎng)例子用例子說明效果是最好的,我們用特定格式往二進制文件里寫入數(shù)據(jù),然后再讀出數(shù)據(jù)。

簡介

python strtuct模塊主要在Python中的值于C語言結(jié)構(gòu)之間的轉(zhuǎn)換。可用于處理存儲在文件或網(wǎng)絡(luò)連接(或其它來源)中的二進制數(shù)據(jù)。

順序、格式字符

現(xiàn)在先不要看圖表,稍后我們回來看。圖片來自Python官網(wǎng)

例子

用例子說明效果是最好的,我們用特定格式往二進制文件里寫入數(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)
上述代碼的含義就是,以二進制格式打開一個文件,以指定格式寫入一個二進制串,再從文件取出二進制串,再把取出的串翻譯成python數(shù)據(jù)
struct 最常用的方法有兩個:
struct.pack(fmt,v1,v2,…) 
返回的是一個字符串,是參數(shù)按照fmt數(shù)據(jù)格式組合而成

struct.unpack(fmt,string)
按照給定數(shù)據(jù)格式解開(通常都是由struct.pack進行打包)數(shù)據(jù),返回值是一個tuple


兩個方法的第一個參數(shù)都是fmtfmt就是上面的兩個表格,我們根據(jù)實際內(nèi)容(具體需求)寫出fmt串,讀取或?qū)懭胛募?/p>

文中我們的fmt串是4s5si,具體含義對照上面表格:

4s表示4字節(jié)的字符串(可能我們會遇到整數(shù)計數(shù),例如5h,意思是5個相同的h,意思和4s并不一樣) 
5s含義同4s i表示整數(shù)(有符號)
具體解釋官方文檔也有
上述代碼運行結(jié)果:
b"muyucoderx00x00x00xe2x07x00x00"
(b"muyu", b"coder", 2018)

記錄自己的學(xué)習(xí)筆記,好記性不如爛筆頭(而且還不是好記性...)

拓展

看完本篇文章,有興趣的可以看:struct(廖雪峰)這篇文章,文章講怎么從bmp文件中讀取內(nèi)容

感謝

學(xué)習(xí)Python主要在:廖雪峰的官方網(wǎng)站、菜鳥教程這兩個網(wǎng)站學(xué)習(xí),很感謝他們!

也很感謝其他樂于分享貢獻知識經(jīng)驗的人,謝謝

原文在自己的小博客:木魚博客

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/44656.html

相關(guān)文章

  • Python格式化時間

    摘要:如我們有字符串,如何將它轉(zhuǎn)換為對象呢的用法的作用是格式化時間格式,使其按照我們想要的格式來顯示。如下例,先將字符串解析為對象,然后在格式化時間輸出,將其輸出按照的格式輸出。 datetime簡介 datetime和time的區(qū)別 time在 Python 文檔里,time是歸類在Generic Operating System Services中,換句話說, 它提供的功能是更加接近于操...

    Cc_2011 評論0 收藏0
  • Python 調(diào)用 C 動態(tài)鏈接庫,包括結(jié)構(gòu)體參數(shù)、回調(diào)函數(shù)等

    摘要:調(diào)用以回調(diào)函數(shù)地址為參數(shù)的函數(shù)這個主題就稍微繞一些了,也就是說在接口中,需要傳入回調(diào)函數(shù)作為參數(shù)。這個問題在中也可以解決,并且回調(diào)函數(shù)可以用定義。代碼代碼很簡單回調(diào)函數(shù)的傳入?yún)?shù)為,返回參數(shù)也是。 項目中要對一個用 C 編寫的 .so 庫進行邏輯自測。這項工作,考慮到靈活性,我首先考慮用 Python 來完成。 研究了一些資料,采用 python 的 ctypes 來完成這項工作。已經(jīng)...

    NickZhou 評論0 收藏0
  • python大佬養(yǎng)成計劃----os,datetime,time模塊補充

    摘要:是否則檢驗指定的對象是否存在。由于的模塊實現(xiàn)主要調(diào)用庫,所以各個平臺可能有所不同。時間格式時間戳的方式通常來說,時間戳是指格林威治時間年月日時分秒北京時間年月日時分秒起至現(xiàn)在的總秒數(shù)。元組方式元組共有個元素,返回的函數(shù)主要有,,。 os模塊 os模塊提供了多數(shù)操作系統(tǒng)的功能接口函數(shù)。當(dāng)os模塊被導(dǎo)入后,它會自適應(yīng)于不同的操作系統(tǒng)平臺,根據(jù)不同的平臺進行相應(yīng)的操作,在python編程時,...

    frank_fun 評論0 收藏0
  • 我是如何入門機器學(xué)習(xí)

    摘要:在這里我分享下我個人入門機器學(xué)習(xí)的經(jīng)歷,希望能對大家能有所幫助。相關(guān)學(xué)習(xí)鏈接,,入門后的體驗在入門了機器學(xué)習(xí)之后,在實際工作中,絕大多數(shù)的情況下你并不需要去創(chuàng)造一個新的算法。 機器學(xué)習(xí)在很多眼里就是香餑餑,因為機器學(xué)習(xí)相關(guān)的崗位在當(dāng)前市場待遇不錯,但同時機器學(xué)習(xí)在很多人面前又是一座大山,因為發(fā)現(xiàn)它太難學(xué)了。在這里我分享下我個人入門機器學(xué)習(xí)的經(jīng)歷,希望能對大家能有所幫助。 PS:這篇文章...

    ShowerSun 評論0 收藏0

發(fā)表評論

0條評論

閱讀需要支付1元查看
<