如何连接十六进制数?

时间:2016-11-29 15:18:25

标签: python

我需要通过这种方式从文本文件中提取数据:

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

1 个答案:

答案 0 :(得分:2)

您只需使用binascii.unhexlify即可。然后你可以简单地连接字符串,直到你得到你需要的东西。

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