1

我有一串代表十六进制数字的字符对(例如,0f 表示十进制 15)。我需要这个二进制格式,所以我打电话 binArray = binascii.unhexlify(finalString)

我安装了“Windows 上的 Ubuntu 上的 bash”,当我从那里执行此操作时,它工作正常。

但是,我需要从 windows 环境中的 .bat 文件调用脚本。当我从 .bat 文件中调用完全相同的 python 程序时,如果 unhexlify 在十六进制字符串中看到“0a”,它会将其转换为 0d 0a(在二进制输出中)。这不是文本文件,行尾转换正在破坏我的数据!

当我从 Windows 环境中调用它时,有没有办法说服 unhexlify 停止这样做?

不得不自己进行转换似乎是一种浪费。

4

1 回答 1

0

我发现了为什么 0x0A 字符被转换为 0D0A(IE LF 到 CRLF)

这不是 binascii 的错。我用了

outfile = open(scriptDir + "Output/NVRAM/NVDATAout", 'w') 打开文件,这意味着文本模式,因此写入适合本地系统的换行转换。

当我以二进制模式打开输出文件时,这种转换停止发生。

outfile = open(scriptDir + "Output/NVRAM/NVDATAout", 'wb')

我在这里找到了这个答案: https ://stackoverflow.com/a/9184137/7275012

于 2017-06-13T19:08:39.913 回答