日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

Python struct与小端存储

發布時間:2025/3/20 python 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python struct与小端存储 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在使用Python 實現字符向字節數據類型轉換的時候,Python沒有提供專門處理字節的數據類型,不過Python提供了一個Struct模塊提供bytes和其他二進制數據類型的轉換

pack(),將任意數據類型轉變為bytes數據類型

>>> import struct >>> struct.pack('>I', 10240099) b'\x00\x9c@c'

pack的第一個參數是處理指令,’>I’的意思是:

>表示字節順序是big-endian,也就是網絡序,I表示4字節無符號整數。

后面的參數個數要和處理指令一致。如果不一致會報錯

''' 遇到問題沒人解答?小編創建了一個Python學習交流QQ群:857662006 尋找有志同道合的小伙伴,互幫互助,群里還有不錯的視頻學習教程和PDF電子書! ''' >>> struct.pack('I','2') Traceback (most recent call last):File "<stdin>", line 1, in <module> struct.error: required argument is not an integer >>>

unpack把bytes變成相應的數據類型:

>>> struct.unpack('>IH', b'\xf0\xf0\xf0\xf0\x80\x80') (4042322160, 32896)

H代表兩個字節的無符號整數,

c代表一個字節的字符

所以,盡管Python不適合編寫底層操作字節流的代碼,但在對性能要求不高的地方,利用struct就方便多了。

小端存儲

與數據在存儲器中的存放地址有關

小端存儲:較低的有效字節存放在較低的存儲器地址,較高的有效字節存放在較高的存儲器地址

大端存儲:較高的有效字節存放在較低的存儲器地址,較低的有效字節存放在較高的存儲器地址

為什么會有較高的有效字節,和較低的有效字節的區分呢?

這是因為目前的計算機系統中,我們是以字節為單位的,每個地址單元都對應著一個字節,一個字節為8bit,而C語言中除了有8bit的char外,還有16bit的short類型,還用32bit的long類型(不同的編譯器還不一樣),那么加入我們存放一個長度32bit的整數:

(由于一個地址單元是8bit,需要將這個長度為32bit的數據存放在4個地址單元中)

另外,對于16位或者32位的這些寄存器長度大于8位的處理器,由于寄存器的寬度大于一個內存地址,也面臨這一個如何將多個字節安排的問題。

總結

以上是生活随笔為你收集整理的Python struct与小端存储的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。