当十六进制值为0x0A时,停止python写入回车

当十六进制值为0x0A时,停止python写入回车,python,hex,Python,Hex,我决定温习一下我的python,对于第一个项目,我想我会写一个脚本来帮助我完成另一堂课的家庭作业。对于这个类,我有一个excel电子表格,可以将一些数据转换为十六进制。我通常必须手动将十六进制值输入到我正在使用的程序中,或者我可以从文件中加载二进制数据 我现在设置的脚本允许我复制电子表格中的部分,并将内容复制到临时文本文件中。当我运行脚本时,它会创建一个包含二进制数据的文件。它可以工作,除非我有一个十六进制值0x0A,因为我将字符串值转换为十六进制的方式将其转换为“\n”,所以二进制文件有0D

我决定温习一下我的python,对于第一个项目,我想我会写一个脚本来帮助我完成另一堂课的家庭作业。对于这个类,我有一个excel电子表格,可以将一些数据转换为十六进制。我通常必须手动将十六进制值输入到我正在使用的程序中,或者我可以从文件中加载二进制数据

我现在设置的脚本允许我复制电子表格中的部分,并将内容复制到临时文本文件中。当我运行脚本时,它会创建一个包含二进制数据的文件。它可以工作,除非我有一个十六进制值0x0A,因为我将字符串值转换为十六进制的方式将其转换为“\n”,所以二进制文件有0D 0A,而不是只有0A

获取十六进制值的方法:

hexvalue = chr(int(string_value,16))
我写入文件的方式:

f = file("code_out", "w")
for byte in data:
    f.write(byte)
f.close()

这样做的正确方法是什么?

我认为您需要打开文件进行二进制写入

f = open('file', 'wb')

我想你需要打开文件进行二进制写入

f = open('file', 'wb')
在中打开文件

在Windows上,附加到模式的“b”以二进制模式打开文件,因此也有类似“rb”、“wb”和“r+b”的模式。Windows上的Python区分了文本文件和二进制文件;在读取或写入数据时,文本文件中的行尾字符会自动轻微更改

也就是说,在Windows中的非“二进制模式”下,当向文件流写入“\n”(LF,\x0A)时,实际结果是写入字节序列“\r\n”(CR LF,\x0D\x0A)。有关更多说明,请参阅

这种对文件数据的幕后修改对于ASCII文本文件来说很好,但它会破坏JPEG或EXE文件中的二进制数据。在读取和写入此类文件时,请非常小心地使用二进制模式。在Unix上,在模式中附加一个“b”并没有什么坏处,因此您可以在所有二进制文件中独立使用it平台

在中打开文件

在Windows上,附加到模式的“b”以二进制模式打开文件,因此也有类似“rb”、“wb”和“r+b”的模式。Windows上的Python区分了文本文件和二进制文件;在读取或写入数据时,文本文件中的行尾字符会自动轻微更改

也就是说,在Windows中的非“二进制模式”下,当向文件流写入“\n”(LF,\x0A)时,实际结果是写入字节序列“\r\n”(CR LF,\x0D\x0A)。有关更多说明,请参阅

这种对文件数据的幕后修改对于ASCII文本文件来说很好,但它会破坏JPEG或EXE文件中的二进制数据。在读取和写入此类文件时,请非常小心地使用二进制模式。在Unix上,在模式中附加一个“b”并没有什么坏处,因此您可以在所有二进制文件中独立使用it平台


您得到的错误是什么?以“二进制模式”打开。不是我得到错误,而是我从输入文件中读取0A,而是在将其转换为十六进制并写入新文件后,0A(新行ASCII值)被转换为0D 0A。我不希望0D出现在那里,因为这会给我正在使用此脚本的程序提供不正确的数据。有没有办法将没有转义字符的纯二进制写入文件?编辑:刚刚看到在二进制模式下打开,将尝试现在有趣的事实:
0x0A
是换行符
'\n'
的十六进制代码,而
0x0D
是回车符
'\r'
的十六进制代码。Windows系统用回车符和换行符来标记一行的结尾,而Unix系统用换行符来标记一行的结尾。您得到的错误是什么?以“二进制模式”打开。不是我得到了错误,而是我从输入文件中读取0A,但在将其转换为十六进制并写入新文件后,作为新行ASCII值的0A被转换为0D 0A。我不希望0D出现在那里,因为这会给我正在使用此脚本的程序提供不正确的数据。有没有办法将没有转义字符的纯二进制写入文件?编辑:刚刚看到在二进制模式下打开,将尝试现在有趣的事实:
0x0A
是换行符
'\n'
的十六进制代码,而
0x0D
是回车符
'\r'
的十六进制代码。Windows系统用回车符和换行符来标记行尾,而Unix系统用换行符来标记行尾。