我有一对代表十六进制数字的字符(例如0f表示十进制15(。我需要二进制格式,所以我打电话给 binArray = binascii.unhexlify(finalString)
我安装了"在Windows上的Ubuntu上的Bash",当我从那里执行此操作时,它可以正常工作。
但是,我需要在Windows环境中的.bat文件中调用脚本。当我从.bat文件调用完全相同的python程序时,如果未脱光化显示在十六进制字符串中的" 0a",则将其转换为0d 0a(在二进制输出中(。这不是文本文件,线端转换正在损坏我的数据!
有没有办法说服Undexlify在我从Windows环境中调用它时停止这样做?
必须滚动我自己的转换似乎是一种浪费。
我发现了为什么0x0a字符转换为0d0a(即lf到CRLF(
这不是Binascii的错。我用
outfile = open(scriptDir + "Output/NVRAM/NVDATAout", 'w')
打开文件,这意味着文本模式,因此写入适合本地系统的lineFeed转换。
当我以二进制模式打开输出文件时,此转换停止了。
outfile = open(scriptDir + "Output/NVRAM/NVDATAout", 'wb')
我在这里找到了这个答案:https://stackoverflow.com/a/9184137/7275012