2017-06-02 7 views
1

16進数を表す文字列の文字列があります(たとえば、0fは小数点15を意味します)。 私はバイナリ形式でこれを必要とするので、私は、私は、「Windows上でUbuntuの上のbashは、」インストールされている、と私はそこからこれを実行すると、それが正常に動作 binArray = binascii.unhexlify(finalString)Python binascii.unhexlifyは改行文字を変換しています。これを防ぐことはできますか?

と呼ばれます。

ただし、Windows環境の.batファイルからスクリプトを呼び出す必要があります。 .batファイルから全く同じpythonプログラムを呼び出すと、unhexlifyが16進文字列に '0a'があると、バイナリ出力で0d 0aに変換されます。 これはテキストファイルではなく、行末変換によってデータが破損しています。

Windows環境から呼び出すときにunhexlifyがこれをやめるように説得する方法はありますか?

ロール・マイ・ナンバー変換をしなければならないのは無駄なようです。

+0

あなたは、Python 2または3を使用していますか? –

+0

Python 2.7.6(デフォルト、2016年10月26日、20:30:19) –

+0

上記のバージョンは、UbunuシェルからPythonを実行したときのものです。 –

答えて

0

0x0Aの文字が0D0Aに変換なった理由私はそれはbinasciiのせいではありません(CRLFにすなわち、LF)

を見つけました。 私は

ファイルを開くために、テキストモードを意味するので、ローカルシステムに適切な改行変換を行います。

バイナリモードで出力ファイルを開いたとき、この変換が停止しました。

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

私はここでこの答えを見つけました: https://stackoverflow.com/a/9184137/7275012

関連する問題