国产睡熟迷奷白丝护士系列精品,中文色字幕网站,免费h网站在线观看的,亚洲开心激情在线

      <sup id="hb9fh"></sup>
          1. 千鋒教育-做有情懷、有良心、有品質(zhì)的職業(yè)教育機(jī)構(gòu)

            手機(jī)站
            千鋒教育

            千鋒學(xué)習(xí)站 | 隨時(shí)隨地免費(fèi)學(xué)

            千鋒教育

            掃一掃進(jìn)入千鋒手機(jī)站

            領(lǐng)取全套視頻
            千鋒教育

            關(guān)注千鋒學(xué)習(xí)站小程序
            隨時(shí)隨地免費(fèi)學(xué)習(xí)課程

            當(dāng)前位置:首頁(yè)  >  技術(shù)干貨  > 淺析Python中的struct模塊

            淺析Python中的struct模塊

            來(lái)源:千鋒教育
            發(fā)布人:xqq
            時(shí)間: 2023-11-07 14:42:22 1699339342

            最近在學(xué)習(xí)python網(wǎng)絡(luò)編程這一塊,在寫簡(jiǎn)單的socket通信代碼時(shí),遇到了struct這個(gè)模塊的使用,當(dāng)時(shí)不太清楚這到底有和作用,后來(lái)查閱了相關(guān)資料大概了解了,在這里做一下簡(jiǎn)單的總結(jié)。

            了解c語(yǔ)言的人,一定會(huì)知道struct結(jié)構(gòu)體在c語(yǔ)言中的作用,它定義了一種結(jié)構(gòu),里面包含不同類型的數(shù)據(jù)(int,char,bool等等),方便對(duì)某一結(jié)構(gòu)對(duì)象進(jìn)行處理。而在網(wǎng)絡(luò)通信當(dāng)中,大多傳遞的數(shù)據(jù)是以二進(jìn)制流(binarydata)存在的。當(dāng)傳遞字符串時(shí),不必?fù)?dān)心太多的問題,而當(dāng)傳遞諸如int、char之類的基本數(shù)據(jù)的時(shí)候,就需要有一種機(jī)制將某些特定的結(jié)構(gòu)體類型打包成二進(jìn)制流的字符串然后再網(wǎng)絡(luò)傳輸,而接收端也應(yīng)該可以通過(guò)某種機(jī)制進(jìn)行解包還原出原始的結(jié)構(gòu)體數(shù)據(jù)。python中的struct模塊就提供了這樣的機(jī)制,該模塊的主要作用就是對(duì)python基本類型值與用python字符串格式表示的Cstruct類型間的轉(zhuǎn)化(ThismoduleperformsconversionsbetweenPythonvaluesandCstructsrepresentedasPythonstrings.)。stuct模塊提供了很簡(jiǎn)單的幾個(gè)函數(shù),下面寫幾個(gè)例子。

            1、基本的pack和unpack

            struct提供用formatspecifier方式對(duì)數(shù)據(jù)進(jìn)行打包和解包(PackingandUnpacking)。例如:

            importstruct

            importbinascii

            values=(1,'abc',2.7)

            s=struct.Struct('I3sf')

            packed_data=s.pack(*values)

            unpacked_data=s.unpack(packed_data)

            print'Originalvalues:',values

            print'Formatstring:',s.format

            print'Uses:',s.size,'bytes'

            print'PackedValue:',binascii.hexlify(packed_data)

            print'UnpackedType:',type(unpacked_data),'Value:',unpacked_data

            輸出:

            Originalvalues:(1,'abc',2.7)

            Formatstring:I3sf

            Uses:12bytes

            PackedValue:0100000061626300cdcc2c40

            UnpackedType:Value:(1,'abc',2.700000047683716)

            代碼中,首先定義了一個(gè)元組數(shù)據(jù),包含int、string、float三種數(shù)據(jù)類型,然后定義了struct對(duì)象,并制定了format‘I3sf’,I表示int,3s表示三個(gè)字符長(zhǎng)度的字符串,f表示float。最后通過(guò)struct的pack和unpack進(jìn)行打包和解包。通過(guò)輸出結(jié)果可以發(fā)現(xiàn),value被pack之后,轉(zhuǎn)化為了一段二進(jìn)制字節(jié)串,而unpack可以把該字節(jié)串再轉(zhuǎn)換回一個(gè)元組,但是值得注意的是對(duì)于float的精度發(fā)生了改變,這是由一些比如操作系統(tǒng)等客觀因素所決定的。打包之后的數(shù)據(jù)所占用的字節(jié)數(shù)與C語(yǔ)言中的struct十分相似。

            以上內(nèi)容為大家介紹了淺析Python中的struct模塊,希望對(duì)大家有所幫助,如果想要了解更多Python相關(guān)知識(shí),請(qǐng)關(guān)注IT培訓(xùn)機(jī)構(gòu):千鋒教育。

            聲明:本站稿件版權(quán)均屬千鋒教育所有,未經(jīng)許可不得擅自轉(zhuǎn)載。
            10年以上業(yè)內(nèi)強(qiáng)師集結(jié),手把手帶你蛻變精英
            請(qǐng)您保持通訊暢通,專屬學(xué)習(xí)老師24小時(shí)內(nèi)將與您1V1溝通
            免費(fèi)領(lǐng)取
            今日已有369人領(lǐng)取成功
            劉同學(xué) 138****2860 剛剛成功領(lǐng)取
            王同學(xué) 131****2015 剛剛成功領(lǐng)取
            張同學(xué) 133****4652 剛剛成功領(lǐng)取
            李同學(xué) 135****8607 剛剛成功領(lǐng)取
            楊同學(xué) 132****5667 剛剛成功領(lǐng)取
            岳同學(xué) 134****6652 剛剛成功領(lǐng)取
            梁同學(xué) 157****2950 剛剛成功領(lǐng)取
            劉同學(xué) 189****1015 剛剛成功領(lǐng)取
            張同學(xué) 155****4678 剛剛成功領(lǐng)取
            鄒同學(xué) 139****2907 剛剛成功領(lǐng)取
            董同學(xué) 138****2867 剛剛成功領(lǐng)取
            周同學(xué) 136****3602 剛剛成功領(lǐng)取
            相關(guān)推薦HOT
            Python裝飾器?的寫法以及應(yīng)用場(chǎng)景

            含義:裝飾器本質(zhì)就是函數(shù),為其他函數(shù)添加附加功能原則:不修改被修飾函數(shù)的代碼不修改被修飾函數(shù)的調(diào)用方式應(yīng)用場(chǎng)景:無(wú)參裝飾器在用戶登錄認(rèn)...詳情>>

            2023-11-07 17:38:46
            Python粘包

            什么是粘包?socket中造成粘包的原因是什什么?哪些情況會(huì)發(fā)生粘包現(xiàn)象?只有TCP有粘包現(xiàn)象,UDP永遠(yuǎn)不會(huì)粘包粘包:在獲取數(shù)據(jù)時(shí),出現(xiàn)數(shù)據(jù)的內(nèi)容不...詳情>>

            2023-11-07 17:35:10
            Python之select、poll、epoll模型的區(qū)別

            select、poll、epoll模型的區(qū)別?(屬于多路復(fù)用IO的模型)都是i/o多路復(fù)用的機(jī)制,監(jiān)視多個(gè)socket是否發(fā)生變化,本質(zhì)上都是同步i/oselect,poll實(shí)...詳情>>

            2023-11-07 17:31:34
            Python進(jìn)程、線程、協(xié)程的區(qū)別

            簡(jiǎn)述進(jìn)程、線程、協(xié)程的區(qū)別以及應(yīng)用場(chǎng)景?線程是指進(jìn)程內(nèi)的一個(gè)執(zhí)行單元,#進(jìn)程進(jìn)程擁有自己獨(dú)立的堆和棧,既不共享堆,亦不共享?xiàng)?,進(jìn)程由操作...詳情>>

            2023-11-07 17:27:58
            簡(jiǎn)述Python數(shù)據(jù)庫(kù)三大范式?

            python數(shù)據(jù)庫(kù)的三大特性:'實(shí)體':表'屬性':表中的數(shù)據(jù)(字段)'關(guān)系':表與表之間的關(guān)系----------------------------...詳情>>

            2023-11-07 17:24:22