2016-11-29 162 views
0

我需要從那裏通過這種方式寫了一個文本文件中提取數據:如何連接十六進制數字?

ccddeeff8899aabb4455667700112233 

所以我的第一個問題是如何將明文轉換爲有這樣的格式:

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

我之後的目標是連接從文件中提取的數據與START_OF_DATA='\x24'.

我的第二個問題是如何連接DATA+START_OF_DATA。 事實上,起初當我測試我的工作,我只是用只有一個明文,所以我用這個聲明:

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

我把它這樣的:plaintxt_16b = line_array [0:32] 從binascii進口unhexlify clear_msg = binascii.unhexlify(plaintxt_16b)IT給我一個錯誤:clear_msg = binascii.unhexlify(plaintxt_16b) NameError :名稱'binascii'未定義 – nani92

+1

您導入了'unhexlify'並調用了'binascii.unhexlify'。把它稱爲'unhexlify(plaintxt_16b)'*或*做'binascii'而不是'from binascii import unhexlify'。 –

+0

謝謝你的作品 – nani92