我有一串代表十六进制数的字符对(例如0f表示十进制数15)。
我需要二进制格式,所以我打电话给
binArray = binascii.unhexlify(finalString)
我在Windows上使用Ubuntu"安装,当我从那里执行它时,它工作正常。
但是,我需要从windows环境中的.bat文件调用脚本。 当我从.bat文件中调用完全相同的python程序时,如果unhexlify看到' 0a'在十六进制字符串中,它将其转换为0d 0a(在二进制输出中)。 这不是文本文件,并且行结束转换正在破坏我的数据!
当我从Windows环境调用它时,有没有办法说服unhexlify停止这样做?
完成自己的转换似乎是浪费。
答案 0 :(得分:0)
我发现为什么0x0A字符被转换为0D0A(I.E. LF到CRLF)
这不是binascii的错。 我用了
outfile = open(scriptDir + "Output/NVRAM/NVDATAout", 'w')
打开文件,这意味着文本模式,因此写入适合本地系统的换行转换。
当我以二进制模式打开输出文件时,此转换停止发生。
outfile = open(scriptDir + "Output/NVRAM/NVDATAout", 'wb')
我在这里找到了这个答案: https://stackoverflow.com/a/9184137/7275012