Python struct模組

來源:互聯網
上載者:User

標籤:64位   格式化字串   article   用處   佔用   from   表示   樣本   流轉   

    • Python struct模組
      • 用處
      • struct模組中的函數
      • 格式化字串
        • 對齊
        • 格式符
      • code使用樣本
      • Python參考手冊struct模組連結

     

    轉載(http://blog.csdn.net/lis_12/article/details/52777983).

    用處
    1. 按照指定格式將Python資料轉換為字串,該字串為位元組流,如網路傳輸時,不能傳輸int,此時先將int轉化為位元組流,然後再發送;
    2. 按照指定格式將位元組流轉換為Python指定的資料類型;
    3. 處理位元據,如果用struct來處理檔案的話,需要用’wb’,’rb’以二進位(位元組流)寫,讀的方式來處理檔案;
    4. 處理c語言中的結構體;
    struct模組中的函數
    函數 return explain
    pack(fmt,v1,v2…) string 按照給定的格式(fmt),把資料轉換成字串(位元組流),並將該字串返回.
    pack_into(fmt,buffer,offset,v1,v2…) None 按照給定的格式(fmt),將資料轉換成字串(位元組流),並將位元組流寫入以offset開始的buffer中.(buffer為可寫的緩衝區,可用array模組)
    unpack(fmt,v1,v2…..) tuple 按照給定的格式(fmt)解析位元組流,並返回解析結果
    pack_from(fmt,buffer,offset) tuple 按照給定的格式(fmt)解析以offset開始的緩衝區,並返回解析結果
    calcsize(fmt) size of fmt 計算給定的格式(fmt)佔用多少位元組的記憶體,注意對齊
    格式化字串

    當打包或者解包的時,需要按照特定的方式來打包或者解包.該方式就是格式化字串,它指定了資料類型,除此之外,還有用於控制位元組順序、大小和對齊的特殊字元.

    對齊

    為了同c中的結構體交換資料,還要考慮c或c++編譯器使用了位元組對齊,通常是以4個位元組為單位的32位系統,故而struct根據本地機器位元組順序轉換.可以用格式中的第一個字元來改變對齊.定義如下

    Character Byte order Size Alignment
    @(預設) 本機 本機 本機,湊夠4位元組
    = 本機 標準 none,按原位元組數
    < 小端 標準 none,按原位元組數
    > 大端 標準 none,按原位元組數
    ! network(大端) 標準 none,按原位元組數

    如果不懂大小端,見大小端參考網址.

    格式符
    格式符 C語言類型 Python類型 Standard size
    x pad byte(填充位元組) no value  
    c char string of length 1 1
    b signed char integer 1
    B unsigned char integer 1
    ? _Bool bool 1
    h short integer 2
    H unsigned short integer 2
    i int integer 4
    I(大寫的i) unsigned int integer 4
    l(小寫L) long integer 4
    L unsigned long long 4
    q long long long 8
    Q unsigned long long long 8
    f float float 4
    d double float 8
    s char[] string  
    p char[] string  
    P void * long  

    注- -!

    1. _Bool在C99中定義,如果沒有這個類型,則將這個類型視為char,一個位元組;
    2. q和Q只適用於64位機器;
    3. 每個格式前可以有一個數字,表示這個類型的個數,如s格式表示一定長度的字串,4s表示長度為4的字串;4i表示四個int;
    4. P用來轉換一個指標,其長度和電腦相關;
    5. f和d的長度和電腦相關;

Python struct模組

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.