python二進制數據
⑴ 在python中如何從二進制文件中讀取信息
你是指讀入二進制文件吧?x0dx0a可以使用numpy.fromfile(),也可以使用open(filename, 'rb'),其中的'b'就是二進制的意思,然後使用文件類型的read方法,讀取一些位元組,再用struct.unpack()方法來解析二進制。x0dx0a第一種方法是一次性讀入文件(或文件的前多少個連續位元組)到一個數組中,因此,靈活性差。x0dx0a第二種方法靈活性很高,可以讀取任意位置(使用文件的seek()方法跳躍位置)的二進制數據,再使用struct.unpack()方法來進行各種二進制解析。x0dx0ax0dx0a提示:二進制文件是不保留存儲方式的數據格式,因此,讀二進制文件時應該知道二進制文件的存儲格式。
⑵ 求助:python如何按位解析二進制數據
可以的,二進制是計算機內的表示方法,處理二進制數據是最基本的能力。
如果是二進制字元串轉十進制:
>>>x='10101010'
>>>int(x,2)
170
如果是從文件或網路中獲取的數據,要知道某一位是0還是1的話,獲取的數據可以按字元讀取,由於一個字元由8位二進製表示,分別讀取1到8位的二進制值就可以了:
>>>get_char_bit=lambdachar,n:(char>>(8-n))&1#從高到低分別為第1~8位
>>>data=b'ab'#在python3中字元串默認是unicode,所以加上b前綴兼容
>>>#在python3中按字元讀取byte字元串是數字,而python2讀出來的卻是字元,但bytearray是一致的都是數字
>>>data=bytearray(data)
>>>result=[]
>>>forcharindata:
foriinrange(1,9):
result.append(get_char_bit(char,i))
>>>result
[0,1,1,0,0,0,0,1,0,1,1,0,0,0,1,0]
還有一種比較簡單的方法是使用內置的bin函數
>>>data=bytearray(b'ab')
>>>result=[]
>>>forcharindata:
result.extend(bin(char)[2:].rjust(8,'0'))
>>>result
['0','1','1','0','0','0','0','1','0','1','1','0','0','0','1','0']
⑶ python中二進制數10101轉為十進制數的表達式是什麼
在Python中,可以使用int()函數將二進制數10101轉換為十進制數。int()函數的第一個參數為要轉換的數,第二個參數為進制。例如,要將二進制數10101轉換為十進制數,可以使用以下表達式:
int('10101', 2)
該表達式會將二進制數10101轉換為十進制數21。
⑷ python讀取二進制並轉為其他類型數據
file = open("test.spc", 'rb')
content = file.read()
unpack('H', binary_string) # unsigned short
unpack('d', binary_string) # double
unpack('Q', binary_string) # unsigned long long
unpack('l', binary_string) # long
pack('H',1) # unsigned short
pack('d', 5.23) # double
pack('Q', 11111111) # unsigned long long
pack('l', 1111) # long</pre>
詳見官方文檔: struct官方文檔
⑸ python3字元串與二進制互相轉換
python中,沒有" 0-1 "形式的二進制類型,但我們依然可以存儲二進制類型的數據。
利用字元串(string)類型,可以存儲二進制數據。即:將二進制數據以字元串的形式存儲。
下面分享一種字元串和二進制串互相轉換的具體實現方法。
運行結果:
【END】
最後給大家推薦一個好東西:
每個python程序員想必都會很喜歡的東西,點擊去看
喜歡嗎?喜歡就點個贊吧~
⑹ python二進制最左邊是0
這是因為早期只使用了127個字元,而7位就完全能夠表示,所以最高位是0。
二進制,發現者萊布尼茨,是在數學和數字電路中以2為基數的記數系統,是以2為基數代表系統的二進位制。
這一系統中,通常用兩個不同的符號0(代表零)和1(代表一)來表示。數字電子電路中,邏輯門的實現直接應用了二進制,現代的計算機和依賴計算機的設備里都使用二進制。
⑺ python 怎麼處理二進制文件
處理二進制數據離不開python的struct模塊,struct理解上你可以把它理解為c語言的結構體,使用該模塊的pack和unpack方法,可以很容易的把二進制數據轉換為常用的類型數據,如整型、字元型等
結構體如下:
struct Header
{
unsigned short id;
char[4] tag;
unsigned int version;
unsigned int count;
}
⑻ Python讀取二進制文件
實際項目中經常遇到讀取二進制問題,Python下讀取二進制文件一般用Python的文件打開讀寫相關函數和struct.
1。獲取文件名filename,可用對話框,也可以直接手寫
2。打開文件,這里中是打開,像看書一樣,只是打開書,還沒有看裡面的內容,可以看,也可以不看
binFile=open(filename,'rb')
3。那就看看吧,binFile現在就是書的名字了。這里我們讀入4個字,如果read()將讀入整個文件
context=binFile.read(4)
4。讀入之後問題來了,context包含四個字(4Bytes),但這四個字是加密的(二進制)。這時要找翻譯struct.unpack
realContext=struct.unpack(format,context)
5。format的就是加密規則了,由1,2,4,8個位元組組成其他類型,或者其他類型的數組。
a,b,c,d=struct.unpack('4c',context)
讀入四個字元
對應格式參考 www.jianshu.com/p/5a985f29fa81
6。打開文件後用完一定要關閉,和看書一個樣,看完後要合上,不合上後果自己去想
binFile.close()
7。查找內容,文件內容可以一個一個字的按順序讀出,但如果已經知道內容在什麼位置,可以用查找方式讀出。
binFile.seek(100)
context=binFile.read(4)
讀出100位置後面的4個字,(101,102,103,104)
8。Python還提供也一些高級讀寫功能,如整行讀取等