国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Python讀寫二進(jìn)制文件

這篇具有很好參考價(jià)值的文章主要介紹了Python讀寫二進(jìn)制文件。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

1. 簡介

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

2. struct模塊介紹

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

函數(shù) return explain
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)存,注意對齊方式

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

Format C Type Python type Standard size
x pad byte no value
c char string of length 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 unsigned int integer 4
l long integer 4
L unsigned long integer 4
q long long integer 8
Q unsigned long long integer 8
f float float 4
d double float 8
s char[] string
p char[] string
P void * integer

5. 實(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()


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

6.1. 字符串前加u

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

str= u'hello'

6.2. 字符串前加r

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

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

6.3. 字符串前加b

表示該字符串是bytes 類型。

bytes = b'hello'

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

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

6.4. 字符串前加f

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

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

參考
[1] python3中的struct模塊使用
[2] Python 字符串前面加u,r,b,f的含義文章來源地址http://www.zghlxwxcb.cn/news/detail-482978.html

到了這里,關(guān)于Python讀寫二進(jìn)制文件的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 07-2_Qt 5.9 C++開發(fā)指南_二進(jìn)制文件讀寫(stm和dat格式)

    07-2_Qt 5.9 C++開發(fā)指南_二進(jìn)制文件讀寫(stm和dat格式)

    除了文本文件之外,其他需要按照一定的格式定義讀寫的文件都稱為二進(jìn)制文件 。每種格式的二進(jìn)制文件都有自己的格式定義,寫入數(shù)據(jù)時(shí)按照一定的順序?qū)懭?,讀出時(shí)也按照相應(yīng)的順序讀出。例如地球物理中常用的 SEG-Y 格式文件,必須按照其標(biāo)準(zhǔn)格式要求寫入數(shù)據(jù)才符合

    2024年02月13日
    瀏覽(22)
  • 5.7:Python如何讀取二進(jìn)制文件?

    隨著信息技術(shù)的不斷發(fā)展,二進(jìn)制數(shù)據(jù)已經(jīng)成為了現(xiàn)代計(jì)算機(jī)應(yīng)用中不可或缺的一部分。在許多情況下,我們需要讀取和處理二進(jìn)制數(shù)據(jù),這些數(shù)據(jù)可能包括圖像、音頻、視頻、壓縮文件等。Python作為一種流行的編程語言,提供了多種方法和庫,可以幫助我們讀取和處理各種

    2024年02月06日
    瀏覽(26)
  • Python讀取二進(jìn)制文件:深入解析與技術(shù)實(shí)現(xiàn)

    Python讀取二進(jìn)制文件:深入解析與技術(shù)實(shí)現(xiàn)

    目錄 一、引言 二、二進(jìn)制文件的基礎(chǔ) 1、二進(jìn)制文件的組成 2、二進(jìn)制文件的編碼 三、Python讀取二進(jìn)制文件的方法 1、使用內(nèi)置函數(shù)open() 2、使用numpy庫 四、處理讀取的二進(jìn)制數(shù)據(jù) 1、解析數(shù)據(jù) 2. 轉(zhuǎn)換數(shù)據(jù)類型 五、總結(jié)與展望 1、高效讀取二進(jìn)制文件 2、處理復(fù)雜的二進(jìn)制文件

    2024年02月04日
    瀏覽(32)
  • 二進(jìn)制の簡介

    二進(jìn)制の簡介

    二進(jìn)制是一種計(jì)算機(jī)科學(xué)中常用的數(shù)字編碼系統(tǒng),它使用只有兩種狀態(tài)的符號(0和1),來表示所有的數(shù)字、字符、指令等信息。在計(jì)算機(jī)系統(tǒng)中,所有的數(shù)據(jù)都以二進(jìn)制形式存儲和處理。 二進(jìn)制的基礎(chǔ)概念是位(bit),一位只能表示0或1兩種狀態(tài)。然后,多個(gè)位組合在一起

    2024年02月10日
    瀏覽(15)
  • pyqt5:python讀取二進(jìn)制文件(音頻PCM文件)顯示波形

    pyqt5:python讀取二進(jìn)制文件(音頻PCM文件)顯示波形

    有個(gè)項(xiàng)目需要輸出10-50Hz的低頻信號驅(qū)動線圈,考慮使用音頻功放硬件,所以做這方面的預(yù)研。 參考文章: 作者:很久沒安靜的回憶了,文章:音頻 PCM 詳解 作者:怪我冷i,文章:音視頻從入門到精通——FFmpeg分離出PCM數(shù)據(jù)實(shí)戰(zhàn) 3.作者:cuijiecheng2018,文章:windows下使用FFmp

    2023年04月21日
    瀏覽(24)
  • 011集:復(fù)制文件(包括exe、 jpg、png、Word、Excel和PPT等二進(jìn)制文件)—python基礎(chǔ)入門實(shí)例

    011集:復(fù)制文件(包括exe、 jpg、png、Word、Excel和PPT等二進(jìn)制文件)—python基礎(chǔ)入門實(shí)例

    ????????在文本文件的內(nèi)部以字符形式存儲數(shù)據(jù),字符是有編碼的,例如GBK (簡體中文) 、UTF-8等;在二進(jìn)制文件的內(nèi)部以字節(jié)形式存儲數(shù)據(jù)、沒有編碼的概念。二進(jìn)制文件較為常用,例如Windows中的exe、圖片 (jpg、png等),以及Word、Excel和PPT等文件。 下面給出一個(gè)jpg圖片示例。

    2024年01月17日
    瀏覽(87)
  • 將數(shù)據(jù)轉(zhuǎn)二進(jìn)制流文件,用PostMan發(fā)送二進(jìn)制流請求

    將數(shù)據(jù)轉(zhuǎn)二進(jìn)制流文件,用PostMan發(fā)送二進(jìn)制流請求

    一、將byte數(shù)組轉(zhuǎn)二進(jìn)制流文件,并保存到本地 byte [] oneshotBytes=new byte[]{78,-29,51,-125,86,-105,56,82,-94,-115,-22,-105,0,-45,-48,-114,27,13,38,45,-24,-15,-13,46,88,-90,-66,-29,52,-23,40,-2,116,2,-115,17,36,15,-84,88,-72,22,-86,41,-90,-19,-58,19,99,-4,-63,29,51,-69,117,-120,121,3,-103,-75,44,64,-58,-34,73,-22,110,-90,92,-35,-18,-128,16,-

    2024年02月15日
    瀏覽(29)
  • java圖片轉(zhuǎn)二進(jìn)制流_java將文件轉(zhuǎn)化成二進(jìn)制流

    二進(jìn)制流的主要編碼格式是base64碼??梢栽诰W(wǎng)上找一些在線轉(zhuǎn)base64編碼的網(wǎng)站進(jìn)行嘗試轉(zhuǎn)換。 例如:http://imgbase64.duoshitong.com/然后通過前端展現(xiàn)和下載。 前端顯示二進(jìn)制流圖片(src中放置base64碼及二進(jìn)制流) 前端下載二進(jìn)制流文件(herf中放置base64碼及二進(jìn)制流,download后面放

    2024年02月06日
    瀏覽(35)
  • 后端返回二進(jìn)制流,前端處理二進(jìn)制文件流,實(shí)現(xiàn)預(yù)覽圖片以及PDF

    后端返回二進(jìn)制流,前端處理二進(jìn)制文件流,實(shí)現(xiàn)預(yù)覽圖片以及PDF

    1、首先預(yù)覽PDF需要 后端 將響應(yīng)頭 Content-Type 設(shè)置為PDF類型 application/pdf ,不能預(yù)覽,會直接下載 2、 前端 定義接口:并設(shè)置相應(yīng)類型 responseType 為 blob 請求數(shù)據(jù):通過 window.URL.createObjectURL(res) 轉(zhuǎn)成本地預(yù)覽地址, 在通過 window.open() 方法打開轉(zhuǎn)成本地預(yù)覽地址即可預(yù)覽PDF,如下

    2024年02月15日
    瀏覽(38)
  • Linux查看二進(jìn)制文件

    Linux查看二進(jìn)制文件

    hexdump 、 hd 、 od 、 xxd hexdump 、 hd 可以使用16進(jìn)制、10進(jìn)制、8進(jìn)制、 ascii 碼的形式查看文件。 執(zhí)行 就會看到hd其實(shí)只是hexdump的一個(gè)軟鏈接。 使用 man hexdump ,可以查看 hexdump 的各種參數(shù)。 length and offset 參數(shù)后面可以跟后綴KiB(=1024)、MiB(=1024 1024),依此類推GiB、TiB、PiB、

    2024年02月08日
    瀏覽(21)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包