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

Python讀寫二進(jìn)制文件的實(shí)現(xiàn)

 更新時(shí)間:2023年04月13日 11:10:05   作者:大作家佚名  
本文主要介紹了Python讀寫二進(jìn)制文件的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

1. 簡介

Python 讀寫文件的二進(jìn)制數(shù)據(jù)需要使用到struct模塊,進(jìn)行C/C++與Python數(shù)據(jù)格式的轉(zhuǎn)換。

2. struct模塊介紹

struct模塊中最常用的函數(shù)為pack和unpack,用法如下:

函數(shù)returnexplain
pack(fmt,v1,v2…)string按照給定的格式(fmt),把數(shù)據(jù)轉(zhuǎn)換成字符串(字節(jié)流),并將該字符串返回.
pack_into(fmt,buffer,offset,v1,v2…)None按照給定的格式(fmt),將數(shù)據(jù)轉(zhuǎn)換成字符串(字節(jié)流),并將字節(jié)流寫入以offset開始的buffer中.(buffer為可寫的緩沖區(qū),可用array模塊)
unpack(fmt,v1,v2……)tuple按照給定的格式(fmt)解析字節(jié)流,并返回解析結(jié)果
pack_from(fmt,buffer,offset)tuple按照給定的格式(fmt)解析以offset開始的緩沖區(qū),并返回解析結(jié)果
calcsize(fmt)size of fmt計(jì)算給定的格式(fmt)占用多少字節(jié)的內(nèi)存,注意對(duì)齊方式

3. struct模塊中數(shù)據(jù)格式fmt對(duì)應(yīng)C/C++和Python中的類型

FormatC TypePython typeStandard size
xpad byteno value
ccharstring of length1
bsigned charinteger1
Bunsigned charinteger1
?_Boolbool1
hshortinteger2
Hunsigned shortinteger2
iintinteger4
Iunsigned intinteger4
llonginteger4
Lunsigned longinteger4
qlong longinteger8
Qunsigned long longinteger8
ffloatfloat4
ddoublefloat8
schar[]string
pchar[]string
Pvoid *integer

4. 實(shí)例

注意:代碼中,<表示小端,>表示大端

import struct

# 打開文件
with open("binary_file.bin", "wb") as f:

? ? # 寫入4個(gè)字節(jié)的整數(shù)(值為12345)
? ? int_value = 12345
? ? f.write(struct.pack("<i", int_value))

? ? # 寫入8個(gè)字節(jié)的雙精度浮點(diǎn)數(shù)(值為3.14159)
? ? double_value = 3.14159
? ? f.write(struct.pack("<d", double_value))

? ? # 寫入一個(gè)字節(jié)的布爾值(值為True)
? ? bool_value = True
? ? f.write(struct.pack("<?", bool_value))

? ? # 寫入一個(gè)定長字符串(10個(gè)字符,值為"hello")
? ? string_value = "hello".encode("utf-8")
? ? f.write(struct.pack("<5s", string_value))

? ? # 寫入一個(gè)定長字節(jié)數(shù)組(20個(gè)字節(jié),值為b"\x01\x02\x03...\x14")
? ? byte_array_value = bytes(range(1, 21))
? ? f.write(struct.pack("<20s", byte_array_value))

? ? f.close()

# 打開文件
with open("binary_file.bin", "rb") as f:

? ? # 讀取4個(gè)字節(jié),解析成一個(gè)整數(shù)
? ? int_value = struct.unpack("<i", f.read(4))[0]
? ??
? ? # 讀取8個(gè)字節(jié),解析成一個(gè)雙精度浮點(diǎn)數(shù)
? ? double_value = struct.unpack("<d", f.read(8))[0]

? ? # 讀取一個(gè)字節(jié),解析成一個(gè)布爾值
? ? bool_value = struct.unpack("<?", f.read(1))[0]

? ? # 讀取一個(gè)字符串,解析成一個(gè)定長字符串(10個(gè)字符)
? ? string_value = struct.unpack("<5s", f.read(5))[0].decode("utf-8")

? ? # 讀取一個(gè)字節(jié)數(shù)組,解析成一個(gè)定長字節(jié)數(shù)組(20個(gè)字節(jié))
? ? byte_array_value = struct.unpack("<20s", f.read(20))[0]

? ? # 打印結(jié)果
? ? print(f"int_value: {int_value}")
? ? print(f"double_value: {double_value}")
? ? print(f"bool_value: {bool_value}")
? ? print(f"string_value: {string_value}")
? ? print(f"byte_array_value: {byte_array_value}")

? ? f.close()

5. Python 字符串前面加u,r,b,f的含義

5.1. 字符串前加u

后面字符串以 Unicode格式進(jìn)行編碼,一般用在中文字符串前面,防止因?yàn)樵创a儲(chǔ)存格式問題,導(dǎo)致再次使用時(shí)出現(xiàn)亂碼。

str= u'hello'

5.2. 字符串前加r

去掉反斜杠的轉(zhuǎn)移機(jī)制。(特殊字符:即那些,反斜杠加上對(duì)應(yīng)字母,表示對(duì)應(yīng)的特殊含義的,比如最常見的”\n”表示換行,”\t”表示Tab等。 )

str= r'hello\n\t\n'

5.3. 字符串前加b

表示該字符串是bytes 類型。

bytes = b'hello'

在 Python3 中,bytes 和 str 的互相轉(zhuǎn)換方式是

str.encode(‘utf-8')
bytes.decode(‘utf-8')

5.4. 字符串前加f

以 f 開頭表示在字符串內(nèi)支持大括號(hào)內(nèi)的python 表達(dá)式,字符串拼接

name = 'Lily'
print(f'My name is {name}.')

參考
[1] python3中的struct模塊使用
[2] Python 字符串前面加u,r,b,f的含義

到此這篇關(guān)于Python讀寫二進(jìn)制文件的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)Python讀寫二進(jìn)制文件內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 常見的在Python中實(shí)現(xiàn)單例模式的三種方法

    常見的在Python中實(shí)現(xiàn)單例模式的三種方法

    這篇文章主要介紹了常見的在Python中實(shí)現(xiàn)單例模式的三種方法,單例模式在各個(gè)編程語言的學(xué)習(xí)中都是需要掌握的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2015-04-04
  • Python函數(shù)中的可變長參數(shù)詳解

    Python函數(shù)中的可變長參數(shù)詳解

    在本篇文章里小編給大家整理的是關(guān)于Python函數(shù)中的可變長參數(shù)的相關(guān)知識(shí)點(diǎn)內(nèi)容,有需要的朋友們參考下。
    2019-09-09
  • python mysql實(shí)現(xiàn)學(xué)生成績管理系統(tǒng)

    python mysql實(shí)現(xiàn)學(xué)生成績管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了python mysql實(shí)現(xiàn)學(xué)生成績管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-10-10
  • python中多個(gè)裝飾器的執(zhí)行順序詳解

    python中多個(gè)裝飾器的執(zhí)行順序詳解

    裝飾器是程序開發(fā)中經(jīng)常會(huì)用到的一個(gè)功能,也是python語言開發(fā)的基礎(chǔ)知識(shí)。這篇文章主要介紹了python中多個(gè)裝飾器的執(zhí)行順序詳解,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-10-10
  • Python獲取接口數(shù)據(jù)的實(shí)現(xiàn)示例

    Python獲取接口數(shù)據(jù)的實(shí)現(xiàn)示例

    本文主要介紹了Python獲取接口數(shù)據(jù)的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-07-07
  • python之MSE、MAE、RMSE的使用

    python之MSE、MAE、RMSE的使用

    今天小編就為大家分享一篇python之MSE、MAE、RMSE的使用,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-02-02
  • Python庫如何打包到PyPI

    Python庫如何打包到PyPI

    這篇文章主要介紹了Python庫如何打包到PyPI問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • Python Selenium網(wǎng)頁自動(dòng)化利器使用詳解

    Python Selenium網(wǎng)頁自動(dòng)化利器使用詳解

    這篇文章主要為大家介紹了使用Python Selenium實(shí)現(xiàn)網(wǎng)頁自動(dòng)化示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-12-12
  • Anaconda+VSCode配置tensorflow開發(fā)環(huán)境的教程詳解

    Anaconda+VSCode配置tensorflow開發(fā)環(huán)境的教程詳解

    Anaconda是一個(gè)開源的python發(fā)行版本,是現(xiàn)在比較流行的python數(shù)據(jù)科學(xué)平臺(tái),可以對(duì)python的科學(xué)包做到有效管理。這篇文章主要介紹了Anaconda+VSCode配置tensorflow開發(fā)環(huán)境,需要的朋友可以參考下
    2020-03-03
  • Python實(shí)現(xiàn)的knn算法示例

    Python實(shí)現(xiàn)的knn算法示例

    這篇文章主要介紹了Python實(shí)現(xiàn)的knn算法,結(jié)合實(shí)例形式詳細(xì)分析了Python實(shí)現(xiàn)knn算法的原理與相關(guān)操作技巧,并附帶給出了statsmodels模塊與pandas模塊的下載、安裝操作方法,需要的朋友可以參考下
    2018-06-06

最新評(píng)論

遂溪县| 白玉县| 渑池县| 徐闻县| 乌鲁木齐市| 华宁县| 景德镇市| 恩施市| 临潭县| 同江市| 桐梓县| 星座| 济南市| 汤阴县| 新野县| 上虞市| 嘉禾县| 金溪县| 金沙县| 泽库县| 裕民县| 镇赉县| 罗山县| 哈尔滨市| 宜良县| 黄石市| 汉沽区| 水城县| 咸丰县| 南陵县| 吉木乃县| 文安县| 大渡口区| 连山| 法库县| 工布江达县| 建昌县| 简阳市| 云阳县| 洪雅县| 满洲里市|