最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

在Python的struct模塊中進(jìn)行數(shù)據(jù)格式轉(zhuǎn)換的方法

 更新時間:2015年06月17日 12:09:59   作者:Darkbull  
這篇文章主要介紹了在Python的struct模塊中進(jìn)行數(shù)據(jù)格式轉(zhuǎn)換的方法,文中還給出了C語言和Python語言的數(shù)據(jù)類型比較,需要的朋友可以參考下

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

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

struct.pack用于將Python的值根據(jù)格式符,轉(zhuǎn)換為字符串(因?yàn)镻ython中沒有字節(jié)(Byte)類型,可以把這里的字符串理解為字節(jié)流,或字節(jié)數(shù)組)。其函數(shù)原型為:struct.pack(fmt, v1, v2, …),參數(shù)fmt是格式字符串。v1, v2, …表示要轉(zhuǎn)換的python值。下面的例子將兩個整數(shù)轉(zhuǎn)換為字符串(字節(jié)流):
 

import struct
 
a = 20
b = 400
 
str = struct.pack("ii", a, b) 
#轉(zhuǎn)換后的str雖然是字符串類型,但相當(dāng)于其他語言中的字節(jié)流(字節(jié)數(shù)組),可以在網(wǎng)絡(luò)上傳輸
print 'length:', len(str)
print str
print repr(str)
 
#---- result
#length: 8
#  ----這里是亂碼
#'/x14/x00/x00/x00/x90/x01/x00/x00'

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

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

str = struct.pack("ii", 20, 400)
a1, a2 = struct.unpack("ii", str)
print 'a1:', a1
print 'a2:', a2
 
#---- result:
#a1: 20
#a2: 400
struct.calcsize

struct.calcsize用于計算格式字符串所對應(yīng)的結(jié)果的長度,如:struct.calcsize(‘ii'),返回8。因?yàn)閮蓚€int類型所占用的長度是8個字節(jié)。
struct.pack_into, struct.unpack_from

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

import struct
from ctypes import create_string_buffer
 
buf = create_string_buffer(12)
print repr(buf.raw)
 
struct.pack_into("iii", buf, 0, 1, 2, -1)
print repr(buf.raw)
 
print struct.unpack_from('iii', buf, 0)
 
#---- result
#'/x00/x00/x00/x00/x00/x00/x00/x00/x00/x00/x00/x00'
#'/x01/x00/x00/x00/x02/x00/x00/x00/xff/xff/xff/xff'
#(1, 2, -1)

關(guān)于格式字符串

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

2015617120927187.jpg (645×656)

具體內(nèi)容請參考Python手冊struct 模塊

相關(guān)文章

  • 詳解Python連接MySQL數(shù)據(jù)庫的多種方式

    詳解Python連接MySQL數(shù)據(jù)庫的多種方式

    這篇文章主要介紹了Python連接MySQL數(shù)據(jù)庫方式,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • Python編程基礎(chǔ)之字典

    Python編程基礎(chǔ)之字典

    這篇文章主要為大家介紹了Python的字典,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2021-12-12
  • python3.7.0的安裝步驟

    python3.7.0的安裝步驟

    本文分步驟給大家介紹了python3.7.0的安裝步驟,本文圖文并茂給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下
    2018-08-08
  • 詳解查看Python解釋器路徑的兩種方式

    詳解查看Python解釋器路徑的兩種方式

    這篇文章主要介紹了詳解查看Python解釋器路徑的兩種方式,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10
  • django有哪些好處和優(yōu)點(diǎn)

    django有哪些好處和優(yōu)點(diǎn)

    在本篇內(nèi)容里小編給大家整理的是一篇關(guān)于django有哪些好處和優(yōu)點(diǎn)的相關(guān)內(nèi)容,有需要的朋友們可以參考下。
    2020-09-09
  • python排列組合庫itertools的具體使用

    python排列組合庫itertools的具體使用

    排列組合是數(shù)學(xué)中必不可少的一部分, Python 提供了itertools庫,該庫具有計算排列和組合的內(nèi)置函數(shù),本文主要介紹了python排列組合庫itertools的具體使用,具有一定的參考價值,感興趣的可以了解下
    2024-01-01
  • Flask WTForms 表單插件的使用

    Flask WTForms 表單插件的使用

    本文主要介紹了Flask WTForms表單插件的使用,Python的WTForms庫通過提供表單的結(jié)構(gòu)、驗(yàn)證和渲染等功能,簡化了表單的處理流程,感興趣的可以了解一下
    2023-11-11
  • python中WSGI是什么,Python應(yīng)用WSGI詳解

    python中WSGI是什么,Python應(yīng)用WSGI詳解

    這篇文章主要介紹一下python中的WSGI, 小編在網(wǎng)上找了幾篇非常好的關(guān)于WSGI介紹,整理一下分享給大家。
    2017-11-11
  • Python利用Canny算法檢測硬幣邊緣

    Python利用Canny算法檢測硬幣邊緣

    這篇文章主要介紹了如何使用Canny算法檢測出紙面上硬幣的邊緣。文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起動手試一試
    2022-01-01
  • Python基于鏈接表實(shí)現(xiàn)無向圖最短路徑搜索

    Python基于鏈接表實(shí)現(xiàn)無向圖最短路徑搜索

    鏈接表的存儲相比較鄰接炬陣,使用起來更方便,對于空間的使用是剛好夠用原則,不會產(chǎn)生太多空間浪費(fèi)。所以本文將以鏈接表方式實(shí)現(xiàn)無向圖最短路徑搜索,需要的可以參考一下
    2022-04-04

最新評論

绍兴市| 定结县| 农安县| 黄梅县| 乌苏市| 仁布县| 碌曲县| 岢岚县| 固镇县| 陇西县| 安泽县| 酉阳| 巴林左旗| 广西| 如东县| 榆林市| 涟水县| 西城区| 沁水县| 滨州市| 固阳县| 贞丰县| 上虞市| 沾化县| 康保县| 长顺县| 四川省| 定南县| 广灵县| 琼海市| 昌平区| 南宁市| 苏尼特左旗| 禹州市| 包头市| 惠来县| 灵武市| 新乡县| 安塞县| 磐石市| 横峰县|