2017-02-21 537 views
0

首先,我感谢您愿意提供的任何帮助,所以非常感谢您花时间阅读此文。另外,我使用的是Python 3,但我会尽我所能将我的需求转换为任何Python 2语法。如何将二进制文件转换为ASCII

我设法读取我的二进制文件来产生一个非常长的字符串。这是它的一小块:

myfile = "\xde\xad\xbe\xef\x01\x00\xe1\x07\x01\x00\x01\x00\x1e\x00\" 

我想将其转换为ASCII文本。 我挣扎的第一件事是反斜杠。 我曾尝试以下:

convert1 = myfile.split('\\\') 
print(convert1) 

这给了我:

['xde', 'xad', 'xbe', 'xef', 'x01', 'x00', 'xe1', 'x07', 'x01', 'x00', 'x01', 'x00'] 

问题是,我失去了我的反斜杠。我想有它的输出:

['\xde', '\xad', '\xbe', '\xef', '\x01', '\x00', '\xe1', '\x07', '\x01', '\x00', '\x01', '\x00'] 

在这里,我打算使用一个for循环的每个项目列表转换为序,再后来回到一个字符:

convert2 = [] 
for items in convert1: 
    i = ord(items) 
    convert2.append(i) 
convert3 = [] 
for items in convert2: 
    i = chr(items) 
    convert3.append(i) 

我希望这会给我ASCII字符,但如果你知道更简单的方法,我很乐意听到它。 在此先感谢您的帮助。

+0

http://stackoverflow.com/questions/7396849/convert-binary-to-ascii-and-vice-versa – Dadep

+0

这并不完全清楚你想要做什么。为什么你认为二进制文件数据可以转换为ASCII文本?您从文件开头显示的示例?字节字符串“b”\ xde \ xad \ xbe \ xef \ x01 \ x00 \ xe1 \ x07 \ x01 \ x00 \ x01 \ x00 \ x1e \ x00 \“'看起来不像我的简单文本编码。 –

+2

您的'myfile ='和'convert ='行都不是有效的Python。如果我们删除最后一个反斜杠,那么你就不会得到你所说的话,因为(例如)字符串'“\ xde”'里没有任何文字反斜杠(长度为1,长度不是4 。) – DSM

回答

0

您的myfile代码不是有效的Python代码行。假设我们删除最后的\它的作品。如果你想用ord()将它分解成每个单独的字符,那么简单的列表理解就可以了。

myfile = "\xde\xad\xbe\xef\x01\x00\xe1\x07\x01\x00\x01\x00\x1e\x00" 
convert = [ ord(item) for item in myfile ] 
print(convert) 

输出:[222, 173, 190, 239, 1, 0, 225, 7, 1, 0, 1, 0, 30, 0]

字节字符串(“\ XDE”,“\ X-AD”,...)的每个字符都算作本身个别单位如此遍历字节串就已经将它们视为单个单位,根本不需要将其分割成斜线。接下来你要做的就是将ord()应用到每个单位上,同时迭代以获得你想要的结果。

+0

这对于我试图实现的转换很有效。感谢你的帮助。我认为我想转换的文件不容易从二进制转换为ASCII,但是你显示的字符串转换方法效果很好。 再次感谢。 Matt。 – Matt

相关问题