Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/343.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 需要将字符串转换为可由.hex()或其他十六进制转换方法使用的格式_Python - Fatal编程技术网

Python 需要将字符串转换为可由.hex()或其他十六进制转换方法使用的格式

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

我正在使用以下代码从具有多行(示例格式: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_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)