乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      Python模塊學習----struct數(shù)據(jù)格式轉換

       sofes 2011-01-11

        Python是一門非常簡潔的語言,對于數(shù)據(jù)類型的表示,不像其他語言預定義了許多類型(如:在C#中,光整型就定義了8種),它只 定義了六種基本類型:字符串,整數(shù),浮點數(shù),元組,列表,字典。通過這六種數(shù)據(jù)類型,我們可以完成大部分工作。但當Python需要通過網(wǎng)絡與其他的平臺 進行交互的時候,必須考慮到將這些數(shù)據(jù)類型與其他平臺或語言之間的類型進行互相轉換問題。打個比方:C++寫的客戶端發(fā)送一個int型(4字節(jié))變量的數(shù) 據(jù)到Python寫的服務器,Python接收到表示這個整數(shù)的4個字節(jié)數(shù)據(jù),怎么解析成Python認識的整數(shù)呢? Python的標準模塊struct就用來解決這個問題。

        struct模塊的內(nèi)容不多,也不是太難,下面對其中最常用的方法進行介紹:

       struct.pack

        struct.pack用于將Python的值根據(jù)格式符,轉換為字符串(因為Python中沒有字節(jié)(Byte)類型,可以把這里的字符串理解為字節(jié)流,或字節(jié)數(shù)組)。其函數(shù)原型為:struct.pack(fmt, v1, v2, ...),參數(shù)fmt是格式字符串,關于格式字符串的相關信息在下面有所介紹。v1, v2, ...表示要轉換的python值。下面的例子將兩個整數(shù)轉換為字符串(字節(jié)流):

      格式符"i"表示轉換為int,'ii'表示有兩個int變量。進行轉換后的結果長度為8個字節(jié)(int類型占用4個字節(jié),兩個int為8個字 節(jié)),可以看到輸出的結果是亂碼,因為結果是二進制數(shù)據(jù),所以顯示為亂碼??梢允褂胮ython的內(nèi)置函數(shù)repr來獲取可識別的字符串,其中十六進制的 0x00000014, 0x00001009分別表示20和400。

      struct.unpack

        struct.unpack做的工作剛好與struct.pack相反,用于將字節(jié)流轉換成python數(shù)據(jù)類型。它的函數(shù)原型為:struct.unpack(fmt, string),該函數(shù)返回一個 元組 。 下面是一個簡單的例子:

      struct.calcsize

        struct.calcsize用于計算格式字符串所對應的結果的長度,如:struct.calcsize('ii'),返回8。因為兩個int類型所占用的長度是8個字節(jié)。

      struct.pack_into, struct.unpack_from

         這兩個函數(shù)在Python手冊中有所介紹,但沒有給出如何使用的例子。其實它們在實際應用中用的并不多。Google了很久,才找到一個例子,貼出來共享一下:

        在Python手冊中,給出了C語言中常用類型與Python類型對應的格式符:

      格式符 C語言類型 Python類型
      x pad byte no value  
      c char string of length 1  
      b signed char integer  
      B unsigned char integer  
      _Bool bool  
      h short integer  
      H unsigned short integer  
      i int integer  
      I unsigned int integer or long  
      l long integer  
      L unsigned long long  
      q long long long  
      Q unsigned long long long  
      f float float  
      d double float  
      s char[] string  
      p char[] string  
      P void * long

        本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內(nèi)容,請點擊一鍵舉報。
        轉藏 分享 獻花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多