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

时间:2015-03-26 20:05:50

标签: python hex

我决定刷新我的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()

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

2 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:2)

"binary mode"

中打开文件
  

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

即,在非"二进制模式下#34;在Windows中,当" \ n" (LF,\ x0A)写入文件流,实际结果是字节序列" \ r \ n" (CR LF,\ x0D \ x0A)是写的。有关其他说明,请参阅newline

  

这种对文件数据的幕后修改适用于ASCII文本文件,但它会破坏像JPEG或EXE文件中的二进制数据。在读取和写入此类文件时要非常小心地使用二进制模式。在Unix上,附加一个' b'到模式,所以你可以独立于平台使用所有二进制文件。