執行環境:python3.4.3
demo.py:
f=open('s_data.bin','wb')
import struct
s=b'allen'
data=struct.pack('>i5si',7,s,8)
print(data)
f.write(data)
f.close()
a,b,c=struct.unpack('>i5si',data)
print(a,b,c)
b=b.decode('utf-8')
print(b)
f2=open('b.txt','w')
f2.write(b)
f2.close()
控制台輸出:
b'\x00\x00\x00\x07allen\x00\x00\x00\x08'
7 b'allen' 8
allen
[finished in 0.3s]
s_data.bin:
0000 0007 416c 6c65 6e00 0000 08
b.txt:
allen
python3.0中必須使用bytes字串處理二進位制檔案,所以在字串前加b
識別符號即可,如:s=b'allen'
pack函式第乙個引數是格式化字串,如上面的>i5si
表示儲存格式為乙個整數,乙個5字元的字串,乙個整數,>
表示按照高位在前(big-endian)的形式。
如果我們要講bytes字串轉換為unicode字串,需要b=b.decode('utf-8')
如果要解析乙個二進位制檔案的話:
demo.py:
import struct
f=open('s_data.bin','rb')
data=f.read()
print(data)
a,b,c=struct.unpack('>i5si',data)
print(a,b,c)
控制台輸出:
b'\x00\x00\x00\x07allen\x00\x00\x00\x08'
7 b'allen' 8
python2和python3中對於文字檔案和二進位制檔案處理方式不盡相同,所以還要依據開發環境選擇不同的處理方法, C語言中使用struct實現陣列複製
在c語言中,直接在引數中宣告陣列變數是無法實現傳值傳參的,這時只會把陣列的首位址傳過去。將陣列放置到乙個struct中進行傳參,可以實現傳值的方式。例如下面的程式 include struct tag struct tag orange,lime,lemon struct tag twofold s...
和 在python中使用
給定兩個大小為 m 和 n 的有序陣列 nums1 和 nums2。請你找出這兩個有序陣列的中位數,並且要求演算法的時間複雜度為 o log m n 你可以假設 nums1 和 nums2 不會同時為空。示例 1 nums1 1 3 nums2 2 則中位數是 2.0 示例 2 nums1 1 2 ...
python中使用bp Python ocbp包
概述ocbpy是乙個python模組,它可以在aacgm座標和磁性之間進行轉換。相對於開闊地調整緯度和當地時間的座標系 閉合場線邊界 ocb 這對統計特別有用 磁極的研究,其中相對於固定磁座標的網格劃分 系統會導致不同物理區域的平均值,例如極光 和極冠測量。此座標繫在 chisham,g.2017 ...