91aaa在线国内观看,亚洲AV午夜福利精品一区二区,久久偷拍人视频,久久播这里有免费视播

<strong id="fvuar"></strong>

  • <sub id="fvuar"><dl id="fvuar"><em id="fvuar"></em></dl></sub>

    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)前位置:首頁  >  技術(shù)干貨  > 淺析Python中的struct模塊

      淺析Python中的struct模塊

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

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

      了解c語言的人,一定會知道struct結(jié)構(gòu)體在c語言中的作用,它定義了一種結(jié)構(gòu),里面包含不同類型的數(shù)據(jù)(int,char,bool等等),方便對某一結(jié)構(gòu)對象進(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)該可以通過某種機(jī)制進(jìn)行解包還原出原始的結(jié)構(gòu)體數(shù)據(jù)。python中的struct模塊就提供了這樣的機(jī)制,該模塊的主要作用就是對python基本類型值與用python字符串格式表示的Cstruct類型間的轉(zhuǎn)化(ThismoduleperformsconversionsbetweenPythonvaluesandCstructsrepresentedasPythonstrings.)。stuct模塊提供了很簡單的幾個(gè)函數(shù),下面寫幾個(gè)例子。

      1、基本的pack和unpack

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

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

      聲明:本站稿件版權(quán)均屬千鋒教育所有,未經(jīng)許可不得擅自轉(zhuǎn)載。
      10年以上業(yè)內(nèi)強(qiáng)師集結(jié),手把手帶你蛻變精英
      請您保持通訊暢通,專屬學(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)用場景

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

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

      什么是粘包?socket中造成粘包的原因是什什么?哪些情況會發(fā)生粘包現(xiàn)象?只有TCP有粘包現(xiàn)象,UDP永遠(yuǎn)不會粘包粘包:在獲取數(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ū)別

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

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

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

      2023-11-07 17:24:22