我正在尝试制作一个python程序,将文本转换为一个长二进制字符串。通常的测试和句子很容易转换成二进制,但是我在空格上遇到了麻烦。
如何输入二进制字节来表示enter键?
我只是输入'/‘和'n’字符串吗?
理想情况下,我希望能够将整个文本文件转换为二进制字符串,并能够再次将其转换回来。显然,如果我用python脚本来完成这个任务,那么选项卡就会被搞乱,程序就会被破坏。
C语言能更好地完成这些工作吗?
显然,C程序在没有空格的情况下仍然可以运行,而python则不能。
简而言之,我需要知道如何用二进制表示'tab‘和'enter’键,以及如何创建函数将它们转换为二进制。bin(ord(‘\n’)是好的吗?
发布于 2015-01-13 00:18:06
那么简单一点呢:
def text_to_bits(text):
bytes = text.encode('utf8')
bits = [bin(ord(c))[2:].zfill(8) for c in bytes]
return ''.join(bits)这将准确地使用text中的字节(一旦编码到utf8中--如果text是ASCII,这将是无害的,但如果是Unicode,则是必不可少的!-)所以不需要约定或其他安排--您将得到一串0s和1,每个字节8位。
正如@gnibbler的评论所正确指出的那样,如果text是数百个字符,那么查找表将更快,例如,用两行替换之前的bits =:
lookup = {c: bin(c))[2:].zfill(8) for c in range(256)}
bits = [lookup[ord(c)] for c in bytes]或者,lookup也可以是一个列表:
lookup = [bin(c))[2:].zfill(8) for c in range(256)]所有这些都应该是一样的,选择最适合你的速度和清晰的组合!)
https://stackoverflow.com/questions/27912757
复制相似问题