如何连接十六进制数字?
问题描述:
我需要从那里通过这种方式写了一个文本文件中提取数据:如何连接十六进制数字?
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
答
您可以简单地使用binascii.unhexlify
。然后你可以简单地连接字符串,直到你有你需要的。
from binascii import unhexlify
res = unhexlify("ccddeeff8899aabb4455667700112233")
print("\x24" + res)
我把它这样的:plaintxt_16b = line_array [0:32] 从binascii进口unhexlify clear_msg = binascii.unhexlify(plaintxt_16b)IT给我一个错误:clear_msg = binascii.unhexlify(plaintxt_16b) NameError :名称'binascii'未定义 – nani92
您导入了'unhexlify'并调用了'binascii.unhexlify'。把它称为'unhexlify(plaintxt_16b)'*或*做'binascii'而不是'from binascii import unhexlify'。 –
谢谢你的作品 – nani92