-1

このコードから取得したこの RFID タグ番号を変換しようとしています。

import serial

ser = serial.Serial()
ser.port = "COM1"
ser.baudrate = 9600
ser.timeout = 3
ser.open()

if ser.open is True:
    print "Port Not open"

while ser.isOpen():
    #ser.timeout = 7

    response = ser.read(17)
    response = response.encode('hex')

    print response

これ0000000000000000000213780510015dffは16進数ですが、10進数または文字列に変換したいです。これを行おうとすると、トークン エラーが発生します。どうすれば修正できますか?

4

2 に答える 2

5

あなたは「…を文字列に変換」したいと言っています。

を使用unhexlifyして、またはdecode('hex').

ただし、あなたの場合、最初に hex を持っている唯一の理由は、 を呼び出しencode('hex')たからです。だから…そうしないでください。

それを int や Decimal などにデコードしたい場合は、Maxime の回答が示すように、適切なコンストラクターを使用してそれを行うことができます。ただし、int としてデコードするためだけに 16 進数に変換するのではなく、直接デコードしたい場合があります。それとも、16 進文字列を 10 進文字列にデコードしたいですか? それとも、これは UUID スタイルの構造であり、それを使用struct.unpackして断片にデコードしたいのでしょうか? または…?何をしようとしているのか正確にわからない場合、正確な答えを出すのは困難です…</p>

于 2013-09-23T20:28:48.833 に答える
3

int を使用して、16 進数を整数に変換できます。

>>> int("0000000000000000000213780510015dff", 16)
149595175772052991
于 2013-09-23T20:27:35.163 に答える