2016-11-29 9 views
0

私はそれがこの方法で書かれているテキストファイルからデータを抽出する必要があります。どのように連結16進数ですか?

ccddeeff8899aabb4455667700112233 

だから私の最初の質問は、この形式を持っているために、平文を変換する方法である:

DATA= '\xcc\xdd\xee\xff\x88\x99\xaa\xbb\x44\x55\x66\x77\x00\x11\x22\x33' 

それ以降の私の目標は、ファイルから抽出したデータを連結することです。START_OF_DATA='\x24'.

私の2番目の質問はどのように連結するのですかDATA+START_OF_DATAです。私は私の仕事をテストする際に実際に は、最初に私はちょうど1平文を使用ので、私は、この宣言を使用:

clear_msg=(b'\x24\xcc\xdd\xee\xff\x88\x99\xaa\xbb\x44\x55\x66\x77\x00\x11\x22\x33') 

私はまさにこれと同じフォーマットを持って最後にする必要があります。

これは私のスクリプトはPythonである:

import string 
import serial 
import time 
from array import array 
import struct 

with open('C:\\Users\\user\\Plaintext.txt') as f: 
    lines = f.readlines() 

SOF= '\x24' 
ser = serial.Serial(port='COM4',\ 
        baudrate=230400,\ 
        parity=serial.PARITY_NONE,\ 
        stopbits=serial.STOPBITS_ONE,\ 
        bytesize=serial.EIGHTBITS,\ 
        timeout=0) 

for a in range (0,1): 
    line_array=lines[a] 
    plaintxt_16b=line_array[0:32] 

#The result is ccddeeff8899aabb4455667700112233 

#clear_msg= SOF+plaintxt_16b 
# print(clear_msg) 
# ser.write(clear_msg) 
time.sleep(0.4) 

#while True: 
# print(ser.read(70)) 
ser.close()    # close ports 

これは私のテキストファイルPlaintext.txtです:

ccddeeff8899aabb4455667700112233 

答えて

2

あなたは単にbinascii.unhexlifyを使用することができます。次に、必要なものが得られるまで文字列を連結することができます。

from binascii import unhexlify 
res = unhexlify("ccddeeff8899aabb4455667700112233") 
print("\x24" + res) 
+0

私はこのようにそれを置く:clear_msg = binascii.unhexlify(plaintxt_16b) NameError:それは私にエラーが発生しますplaintxt_16b = line_array binasciiインポートから[0時32分] unhexlify clear_msg = binascii.unhexlify(plaintxt_16b) :name 'binascii'が定義されていません – nani92

+1

あなたは 'unhexlify'をインポートし、' binascii.unhexlify'を呼び出しました。 'unasclify(plaintxt_16b)' *のように呼び出すか、 'from binascii import unhexlify'の代わりに' import binascii'を実行します。 –

+0

ありがとうございます – nani92

関連する問題