婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > Python二進制數據結構Struct的具體使用

Python二進制數據結構Struct的具體使用

熱門標簽:高德地圖標注是免費的嗎 梅州外呼業務系統 老人電話機器人 無錫客服外呼系統一般多少錢 洪澤縣地圖標注 百度地圖標注位置怎么修改 地圖標注視頻廣告 大連crm外呼系統 北京電信外呼系統靠譜嗎

二進制數據結構Struct

在C/C++語言中,struct被稱為結構體。而在Python中,struct是一個專門的庫,用于處理字節串與原生Python數據結構類型之間的轉換。

本篇,將詳細介紹二進制數據結構struct的使用方式。

函數與Struct類

struct庫包含了一組處理結構值得模塊級函數,以及一個Struct類。格式指示符將由字符串格式轉換為一種編譯表示,這與處理正則表達式得方式類似。

這個轉換會耗費一些資源,所以創建一個Struct實例并再這個實例上調用方法時,只完成一次轉換,往往會更高效。

打包

Struct支持使用格式指示符將數據打包為字符串,另外支持從字符串解包數據,格式指示符由表示數據類型的字符串和可選的數量及字節序指示符構成。

下面,我們來打包一個元組,將其轉換為16進制字節序列,示例如下:

import struct
import binascii

values = (2, 'lyj'.encode('UTF-8'), 3.8)
s = struct.Struct('I 3s f')
packed_data = s.pack(*values)
print("原值:", values)
print("格式指示符:", s.format)
print("大小:", s.size, 'bytes')
print("打包值:", binascii.hexlify(packed_data))

運行之后,效果如下:

這里的格式指示符為“I 3s f”。前面介紹array數組時,我們已經列出過一個表格。其中I標識一個整型或長整型,3s表示3個字節字符串(lyj),f表示浮點數。

解包

struct庫使用unpack()可以從打包的表示數據中抽取數據,這里直接復制上面的打包值,進行測試。示例如下:

import struct
import binascii

packed_data = binascii.unhexlify(b'020000006c796a0033337340')
s = struct.Struct('I 3s f')
unpacked_data = s.unpack(packed_data)
print("解包值:", unpacked_data)

運行之后,效果如下:

雖然使用unpack()解包基本會得到相同值,但浮點數的值有微小的差別。

字節序指示符

默認情況下,值會使用原生C庫的字節序(endianness)來編碼。Struct的字節序指示符如下表所示:

代碼 含義
@ 原生順序
= 原生標準
小端
> 大端
! 網絡順序

示例如下:

import struct
import binascii

values = (2, 'lyj'.encode('UTF-8'), 3.8)
endianness = [
    ('@', '原生順序'),
    ('=', '原生標準'),
    ('', '小端'),
    ('>', '大端'),
    ('!', '網絡順序'),
]
for code, name in endianness:
    s = struct.Struct(code + ' I 3s f')
    packed_data = s.pack(*values)
    print("格式化字符串:", s.format, ' for ', name)
    print("大小:", s.size, 'bytes')
    print("打包:", binascii.hexlify(packed_data))
    print("解包:", s.unpack(packed_data))

運行之后,效果如下:

如果想改變字節序來編碼,如上面代碼所示,只需要改變格式串中提供一個顯式的字節序指令,就可以很容易地覆蓋這個默認選擇。

緩沖區

通常在強調性能的情況下或者向擴展模塊傳入或傳出數據時才會處理二進制打包數據。

為了避免為每個打包結構分配一個新緩沖區所帶來的開銷,通常情況下,我們使用pack_into()和unpack_from()方法支持直接寫入預分配的緩沖區。

示例如下:

import struct
import binascii
import ctypes
import array

values = (2, 'lyj'.encode('UTF-8'), 3.8)
s = struct.Struct('I 3s f')
print("原始值:", values)
b = ctypes.create_string_buffer(s.size)
print("打包之前(緩沖區的值):", binascii.hexlify(b.raw))
s.pack_into(b, 0, *values)
print("打包之后(緩沖區的值):", binascii.hexlify(b.raw))
print("解包:", s.unpack_from(b, 0))

a = array.array('b', b'\0' * s.size)
print("打包之前(緩沖區的值):", binascii.hexlify(a))
s.pack_into(a, 0, *values)
print('打包之后(緩沖區的值):', binascii.hexlify(a))
print("解包:", s.unpack_from(a, 0))

運行之后,效果如下:

這里通過兩種方式,創建緩沖區。其中size屬性用于指出緩沖區需要的大小。

到此這篇關于Pytho 二進制數據結構Struct的具體使用的文章就介紹到這了,更多相關Pytho 二進制數據結構Struct內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • Python 數據結構之樹的概念詳解
  • python三種數據結構及13種創建方法總結
  • python數據結構的排序算法
  • Python內置數據結構列表與元組示例詳解
  • python用sqlacodegen根據已有數據庫(表)結構生成對應SQLAlchemy模型
  • Python數據結構之圖的存儲結構詳解
  • Python數據結構之二叉排序樹的定義、查找、插入、構造、刪除
  • Python數據結構之優先級隊列queue用法詳解
  • 詳解python數據結構之棧stack
  • Python數據結構詳細

標簽:安慶 岳陽 清遠 洛陽 怒江 長春 吉林 泉州

巨人網絡通訊聲明:本文標題《Python二進制數據結構Struct的具體使用》,本文關鍵詞  Python,二進制,數據結構,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Python二進制數據結構Struct的具體使用》相關的同類信息!
  • 本頁收集關于Python二進制數據結構Struct的具體使用的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    成人av电影在线播放| 亚洲3atv精品一区二区三区| 日韩欧美国产精品一区| 欧美精品自拍偷拍| 欧美日本国产视频| 欧美精品xxxxbbbb| 欧美xxxx在线观看| 国产亚洲精品7777| 中文字幕一区二区三区在线播放| 国产蜜臀97一区二区三区| 国产精品理论片在线观看| 亚洲欧美日韩一区二区三区在线观看| 亚洲免费观看高清完整版在线| 一区二区三区四区视频精品免费 | 欧美一二三在线| 日韩一区二区三区在线观看| 久久综合久久鬼色| 国产精品国产三级国产普通话三级| 中文字幕欧美区| 亚洲精品视频在线看| 爽爽淫人综合网网站| 国产精品一区二区三区四区| 色综合久久久久综合| 69堂成人精品免费视频| 国产欧美一区二区三区鸳鸯浴| 亚洲同性同志一二三专区| 亚洲国产cao| 国产福利一区二区三区视频| 色www精品视频在线观看| 欧美一区二区福利在线| 成人欧美一区二区三区小说| 日韩国产高清在线| 99在线精品免费| 欧美电影免费观看完整版| 一区二区中文字幕在线| 久久99精品久久久| 在线免费观看日本一区| 久久久综合视频| 丝袜美腿亚洲综合| 91色|porny| 国产欧美视频在线观看| 免费欧美高清视频| 91美女片黄在线| 久久久www免费人成精品| 天使萌一区二区三区免费观看| 成人三级伦理片| 久久综合色8888| 蜜桃精品在线观看| 欧美三日本三级三级在线播放| 国产精品理论片在线观看| 国产在线精品一区二区三区不卡| 色94色欧美sute亚洲线路二| 国产免费观看久久| 国产一区91精品张津瑜| 日韩一级片网站| 香蕉成人伊视频在线观看| 色综合天天综合在线视频| 国产精品久久久久桃色tv| 国产成人亚洲综合a∨猫咪 | 国产99精品视频| 日韩欧美亚洲国产另类| 亚洲成人你懂的| 99热在这里有精品免费| 国产天堂亚洲国产碰碰| 国产成人自拍网| 久久人人97超碰com| 久久99久久99| 欧美精品一区二区三区高清aⅴ | 国产精品欧美一区喷水| 国产大陆亚洲精品国产| 久久精品亚洲国产奇米99| 久久精品999| 久久只精品国产| 成人丝袜18视频在线观看| 国产精品免费人成网站| 成人妖精视频yjsp地址| 国产精品久久久一本精品| 成人av网站在线| 日韩理论片一区二区| 91精品91久久久中77777| 亚洲一区二区av电影| 欧美一区三区四区| 韩国v欧美v亚洲v日本v| 国产精品免费免费| 日本乱码高清不卡字幕| 五月激情综合网| 欧美tickling网站挠脚心| 国产福利精品导航| 亚洲欧美另类图片小说| 欧美色视频一区| 狠狠狠色丁香婷婷综合久久五月| 久久久亚洲精品一区二区三区| av不卡一区二区三区| 亚洲成av人片一区二区梦乃| 欧美精品v国产精品v日韩精品| 国模冰冰炮一区二区| 亚洲人成电影网站色mp4| 欧美猛男男办公室激情| 久草这里只有精品视频| 成人免费一区二区三区在线观看| 欧美色国产精品| 国产盗摄精品一区二区三区在线| 一区二区三区在线看| 欧美v国产在线一区二区三区| 成人av电影在线| 视频在线观看一区| 日本一区二区三区高清不卡| 欧美性大战久久久久久久| 国产精品自拍网站| 亚洲一区二区四区蜜桃| 久久一夜天堂av一区二区三区| 欧美亚洲国产一区二区三区 | 国产精品每日更新| 欧美电影在线免费观看| 99久久精品免费看国产免费软件| 石原莉奈在线亚洲二区| 亚洲人成伊人成综合网小说| 精品国产乱码久久久久久久| 欧美在线不卡视频| 国产大陆亚洲精品国产| 午夜精品一区二区三区电影天堂| 国产精品美女一区二区在线观看| 欧美一级国产精品| 欧美亚洲综合另类| 色综合中文字幕国产 | av亚洲精华国产精华| 精品一二三四在线| 五月天亚洲婷婷| 亚洲大片在线观看| 一个色在线综合| 亚洲免费资源在线播放| 中文字幕一区二区三区在线不卡 | 亚洲综合色视频| 中文字幕欧美一区| 国产精品久久久久永久免费观看| 26uuu国产日韩综合| 日韩欧美国产一区二区三区| 欧美三级视频在线| 欧美色精品在线视频| 色94色欧美sute亚洲13| 91丨九色丨蝌蚪富婆spa| 99久久精品99国产精品| 成人91在线观看| 成人免费看视频| 成人午夜电影小说| 成人18精品视频| 日本道在线观看一区二区| 91在线免费视频观看| 一本大道久久a久久综合婷婷| 99re在线精品| 91麻豆免费观看| 欧美性高清videossexo| 欧美日韩视频在线第一区| 777奇米成人网| 欧美一区二区三区四区视频| 日韩精品一区二区三区四区视频 | 91精品国产综合久久久久| 在线观看亚洲成人| 91精品国产欧美一区二区18| 日韩欧美国产一区在线观看| 精品美女在线播放| 国产欧美视频在线观看| 日韩码欧中文字| 日韩电影在线观看网站| 日韩国产一二三区| 国产老妇另类xxxxx| 99re在线精品| 日韩西西人体444www| 国产精品欧美一区喷水| 亚洲成人资源网| 紧缚奴在线一区二区三区| 岛国一区二区三区| 欧美三级视频在线观看| 精品国产91亚洲一区二区三区婷婷| 欧美精彩视频一区二区三区| 亚洲一区二区三区三| 久久国产三级精品| 91国产免费观看| www国产成人免费观看视频 深夜成人网| 国产精品入口麻豆九色| 午夜婷婷国产麻豆精品| 国内不卡的二区三区中文字幕 | 欧美大胆一级视频| 97精品超碰一区二区三区| 欧美手机在线视频| 久久久久久久av麻豆果冻| 亚洲欧美日韩一区二区 | 欧美这里有精品| 精品99一区二区三区| 亚洲激情在线播放| 国产一区啦啦啦在线观看| 在线看不卡av| 国产精品美女久久久久av爽李琼 | 艳妇臀荡乳欲伦亚洲一区| 捆绑调教一区二区三区| 91国产免费观看| 国产精品视频免费| 精品一区二区三区久久| 在线观看91精品国产麻豆| 尤物视频一区二区|