2015-12-04 185 views
0

我是一個新的Python用戶,我試圖用十六進制字符串轉換爲十進制整數。 在我的系統,我送模擬值,如:使用Python將十六進制字符串轉換爲十進制整數

import serial 
import binascii 

ser = serial.Serial(port = 'COM3', 
    baudrate = 9600, 
    bytesize=8, 
    parity='N', 
    stopbits=1, 
    timeout =None) # my parameter to communicate with my card 
ser.open() 
a = binascii.a2b_hex('010f0001000000c8d9') # transform hexadecimal under binary format (no problem) 
u = ser.write(a) # send binary data (no problem, it works fine) 
i = ser.read(u) # read the answer 
i 
# I get that hexadecimal string : '\x02\x01d\x0f\x00\x00\x02\xbf7' 

我試了一下:

int(i, 0) 

它沒有工作,我沒有在任何地方找到我怎麼能翻譯成十進制。有人知道嗎?

+0

什麼是輸出'i'處理呢? – vaultah

+0

十六進制將是基數16而不是0 –

+2

爲什麼'我= ser.read(u)'而不是'i = ser.read()'? –

回答

-1

您正在獲取i中的二進制表示。要保持程序的邏輯,您可以使用binascii.b2a_hex將其轉換爲十六進制數字的字符串,然後使用int(string,16)將其轉換爲十進制int。

b = binascii.b2a_hex(i) 
number = int(b,16) 

你要知道,這將是一個長整型,所以請小心

+0

這不匹配什麼發送 –

+0

據我瞭解,它不需要。他們的程序只是發送一個值,而另一端的卡片以相同大小的不同值作出響應 –

+0

@PadraicCunningham,是否必須相同?...因爲它與另一個設備通信...不循環,除非OP確認它是這樣的... –

相關問題