Python 需要将字符串转换为可由.hex()或其他十六进制转换方法使用的格式
我正在使用以下代码从具有多行(示例格式:FFFDF3FFFBF2FFFAF210FFF0)的.csv文件中读取十六进制数据:Python 需要将字符串转换为可由.hex()或其他十六进制转换方法使用的格式,python,Python,我正在使用以下代码从具有多行(示例格式:FFFDF3FFFBF2FFFAF210FFF0)的.csv文件中读取十六进制数据: with open('c:\\temp\\results.csv') as csv_file: csv_reader = csv.reader(csv_file, delimiter=",") line_count = 0 file = open('c:\\temp\\sent.csv', 'w') for row in csv_reade
with open('c:\\temp\\results.csv') as csv_file:
csv_reader = csv.reader(csv_file, delimiter=",")
line_count = 0
file = open('c:\\temp\\sent.csv', 'w')
for row in csv_reader:
hex_string = f'{row[0]}'
bytes_object = bytes.fromhex(hex_string)
file.write(str(bytes_object) + '\n')
line_count += 1
file.close()
输出文件包含转换为此格式的多行(很抱歉是python的新手,因此不确定这是bytearray还是它的实际名称):b'\xff\xfd\xf3\xff\xfb\xf2\xff\xfa\xf2\x10\xff\xf0'
我正在尝试从这个格式转换回原始格式,读取新创建的.csv文件的行(需要编辑文件中的可读ascii,并转换回另一个程序中使用)
有没有办法让它发挥作用?我已经尝试了几种编码方法,但是由于数据的格式已经正确,所以我只需要为.hex()方法获取可读类型的数据。我使用的是最新版本的Python 3.8.1
在此处输入代码
您正在存储字节对象的文本表示,然后尝试在不转换为二进制文件的情况下将其读回。相反,最好以二进制格式打开输出文件,如下所示:
file = open('c:\\temp\\sent.csv', 'wb')
并将字节写入文件:
bytes_object = bytes.fromhex(hex_string)
file.write(bytes_object)
(不需要换行符)
然后执行相反的操作,以二进制格式打开:
with open('c:\\temp\\sent.csv', "rb") as f:
data = f.read()
s = data.hex()
print(s)
这里的
data
是一个bytes对象,它有您正在寻找的hex()
函数。如果您需要未转换的十六进制字符串,为什么要先将其转换为bytes?只要把它当作其他字符串来对待就行了。谢谢,这样我就可以来回转换了;然而,当转换回十六进制时,有许多额外的数据不是源的一部分。我需要逐行转换以读取和编辑,然后逐行将其转换为与另一个数据文件相结合的新的.csv,该文件逐行匹配两个数据源row@SteveB您可能需要为每一行在hex\u字符串中添加一个分隔符。然后在读回该分隔符时进行拆分,因为二进制文件只是一系列字节。
with open('c:\\temp\\sent.csv', "rb") as f:
data = f.read()
s = data.hex()
print(s)