日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術(shù)文章
文章詳情頁

Python二進(jìn)制數(shù)據(jù)結(jié)構(gòu)Struct的具體使用

瀏覽:249日期:2022-06-16 14:37:46
目錄二進(jìn)制數(shù)據(jù)結(jié)構(gòu)Struct函數(shù)與Struct類打包解包字節(jié)序指示符緩沖區(qū)二進(jìn)制數(shù)據(jù)結(jié)構(gòu)Struct

在C/C++語言中,struct被稱為結(jié)構(gòu)體。而在Python中,struct是一個(gè)專門的庫,用于處理字節(jié)串與原生Python數(shù)據(jù)結(jié)構(gòu)類型之間的轉(zhuǎn)換。

本篇,將詳細(xì)介紹二進(jìn)制數(shù)據(jù)結(jié)構(gòu)struct的使用方式。

函數(shù)與Struct類

struct庫包含了一組處理結(jié)構(gòu)值得模塊級(jí)函數(shù),以及一個(gè)Struct類。格式指示符將由字符串格式轉(zhuǎn)換為一種編譯表示,這與處理正則表達(dá)式得方式類似。

這個(gè)轉(zhuǎn)換會(huì)耗費(fèi)一些資源,所以創(chuàng)建一個(gè)Struct實(shí)例并再這個(gè)實(shí)例上調(diào)用方法時(shí),只完成一次轉(zhuǎn)換,往往會(huì)更高效。

打包

Struct支持使用格式指示符將數(shù)據(jù)打包為字符串,另外支持從字符串解包數(shù)據(jù),格式指示符由表示數(shù)據(jù)類型的字符串和可選的數(shù)量及字節(jié)序指示符構(gòu)成。

下面,我們來打包一個(gè)元組,將其轉(zhuǎn)換為16進(jìn)制字節(jié)序列,示例如下:

import structimport binasciivalues = (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))

運(yùn)行之后,效果如下:

Python二進(jìn)制數(shù)據(jù)結(jié)構(gòu)Struct的具體使用

這里的格式指示符為“I 3s f”。前面介紹array數(shù)組時(shí),我們已經(jīng)列出過一個(gè)表格。其中I標(biāo)識(shí)一個(gè)整型或長(zhǎng)整型,3s表示3個(gè)字節(jié)字符串(lyj),f表示浮點(diǎn)數(shù)。

解包

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

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

運(yùn)行之后,效果如下:

Python二進(jìn)制數(shù)據(jù)結(jié)構(gòu)Struct的具體使用

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

字節(jié)序指示符

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

代碼 含義 @ 原生順序 = 原生標(biāo)準(zhǔn) < 小端 > 大端 ! 網(wǎng)絡(luò)順序

示例如下:

import structimport binasciivalues = (2, ’lyj’.encode(’UTF-8’), 3.8)endianness = [ (’@’, ’原生順序’), (’=’, ’原生標(biāo)準(zhǔn)’), (’<’, ’小端’), (’>’, ’大端’), (’!’, ’網(wǎng)絡(luò)順序’),]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))

運(yùn)行之后,效果如下:

Python二進(jìn)制數(shù)據(jù)結(jié)構(gòu)Struct的具體使用

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

緩沖區(qū)

通常在強(qiáng)調(diào)性能的情況下或者向擴(kuò)展模塊傳入或傳出數(shù)據(jù)時(shí)才會(huì)處理二進(jìn)制打包數(shù)據(jù)。

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

示例如下:

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

運(yùn)行之后,效果如下:

Python二進(jìn)制數(shù)據(jù)結(jié)構(gòu)Struct的具體使用

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

到此這篇關(guān)于Pytho 二進(jìn)制數(shù)據(jù)結(jié)構(gòu)Struct的具體使用的文章就介紹到這了,更多相關(guān)Pytho 二進(jìn)制數(shù)據(jù)結(jié)構(gòu)Struct內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: Python 編程
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
亚洲一本视频| 在线看片日韩| 欧美久久久网站| 97久久超碰| 欧美日韩va| 国产精品主播在线观看| 欧美日韩精品一区二区三区视频| 日韩激情综合| 日韩av午夜在线观看| 国产私拍福利精品视频二区| 国产精品日本一区二区不卡视频 | av中文字幕在线观看第一页| 国产一区精品福利| 欧美男人天堂| 久久久久蜜桃| 亚洲欧美日韩精品一区二区| 日韩精品免费视频人成| 嫩草伊人久久精品少妇av杨幂| 国产suv精品一区| 亚洲成人精品| 久久高清国产| 久久国产生活片100| 精品欧美日韩精品| 亚洲天堂一区二区| 午夜精品婷婷| 亚洲精品成a人ⅴ香蕉片| 国产三级精品三级在线观看国产| 精品高清久久| 午夜国产一区二区| 日韩午夜视频在线| 精品欧美视频| 黄色日韩精品| 91精品丝袜国产高跟在线| 久久精品午夜| 午夜国产一区二区| 国产日韩欧美高清免费| 色黄视频在线观看| 亚洲欧洲美洲国产香蕉| 成人日韩av| 奶水喷射视频一区| 欧美日韩中文| 色在线视频观看| 亚洲美女91| 日韩欧美一区二区三区免费看| 日韩在线观看一区二区| 黄色网一区二区| 日韩在线卡一卡二| 久久久久久色| 亚洲天堂黄色| 久久国产精品免费精品3p| 日本久久成人网| 久久狠狠久久| 欧美日韩精品一本二本三本 | 老鸭窝一区二区久久精品| 亚洲福利久久| 国产麻豆一区二区三区精品视频| 99久久激情| 国产精品视频首页| 亚洲欧美日韩精品一区二区| 精品久久亚洲| 日本在线一区二区三区| 欧美日韩在线观看视频小说| 国产欧美综合一区二区三区| 2023国产精品久久久精品双| 国产精品4hu.www| 久久av在线| 麻豆国产精品视频| 亚洲综合专区| 国产一区观看| 国产精品麻豆久久| 欧美一区二区三区久久| 欧美日韩免费观看一区=区三区| 精品国产一区二| 日本中文字幕视频一区| 国产视频一区三区| 亚洲精品一级二级| 麻豆国产精品视频| 色婷婷成人网| 久久性天堂网| 蜜桃成人av| 成人在线免费观看网站| 日本成人中文字幕在线视频| 亚洲神马久久| 亚洲va中文在线播放免费| 国产精品资源| 日韩中文字幕| 水蜜桃久久夜色精品一区的特点| 91日韩免费| 欧美国产另类| 人人精品久久| 综合激情在线| 亚洲一区国产| 婷婷丁香综合| 亚洲v在线看| 婷婷综合六月| 亚洲美女久久精品| 国产精区一区二区| 欧美亚洲tv| 日韩国产欧美一区二区三区| 亚洲久久视频| 日韩精品一级二级 | 久久99精品久久久野外观看| 午夜性色一区二区三区免费视频| 性色一区二区| 伊人久久婷婷| 国产综合欧美| 久久黄色影院| 九九九精品视频| 国产黄色精品| 国产精品久久久久久久久免费高清 | 伊人久久婷婷| 亚洲国产一区二区在线观看 | 青青草91视频| 97久久亚洲| 国产视频网站一区二区三区| 日韩精品一区二区三区中文 | 国产精品久久久久久久久免费高清| 日韩高清一区二区| 日韩av影院| 欧美日韩一区二区三区不卡视频| 日韩在线视频一区二区三区| 日本一区福利在线| 日韩欧美中文字幕在线视频| 日本特黄久久久高潮| 国产亚洲久久| 美女免费视频一区| 在线看片福利| 99久久精品网| 日韩一级欧洲| 亚洲精品高潮| 国产毛片久久久| 高清不卡一区| 在线日韩电影| 免费精品视频| 亚洲精品三级| 国产麻豆精品| 国产美女高潮在线| 欧美香蕉视频| 九色精品91| 亚洲精品激情| 国产精品v日韩精品v欧美精品网站 | 日韩欧美综合| 激情久久婷婷| 亚洲涩涩av| 久久国产婷婷国产香蕉| 精品免费在线| 亚洲天堂成人| 石原莉奈一区二区三区在线观看| 亚洲在线久久| 麻豆精品蜜桃视频网站| 正在播放日韩精品| 国产精品社区| 国产欧美一区二区三区米奇| 久久免费福利| 午夜国产一区二区| 涩涩涩久久久成人精品| 精品国产一区二区三区性色av| 精品成人免费一区二区在线播放| 99国产精品| 国产精品一区二区三区av麻| 国产色播av在线| 亚洲资源av| 911精品国产| 蜜桃av.网站在线观看| 蜜桃视频在线观看一区二区| 国产精品一区二区av日韩在线| 97se综合| 日韩区一区二| 日韩精品麻豆| 清纯唯美亚洲综合一区| 国产亚洲一区二区手机在线观看| 丝袜美腿成人在线| 久久精品一本| 好吊一区二区三区| 日韩av中文字幕一区二区三区| 成人黄色av| 亚洲天堂av资源在线观看| 国产激情一区| 国产偷自视频区视频一区二区| 国产精品麻豆成人av电影艾秋| 久久中文字幕av| 欧美日本久久| 欧美精品黄色| 国内精品伊人| 免费成人在线观看| 日本免费久久| 国产精品一区二区三区四区在线观看| 久久精品国产www456c0m| 欧美亚洲tv| 99视频精品| 极品av在线| 91成人福利| 国产综合精品| 国产精品任我爽爆在线播放| 亚洲国产一区二区三区在线播放| 久久99久久久精品欧美| 免费人成黄页网站在线一区二区| 成人亚洲一区二区| 久久国产婷婷国产香蕉| 亚洲欧洲午夜|