首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >文本-二进制转换

文本-二进制转换
EN

Stack Overflow用户
提问于 2015-01-12 23:49:35
回答 1查看 338关注 0票数 0

我正在尝试制作一个python程序,将文本转换为一个长二进制字符串。通常的测试和句子很容易转换成二进制,但是我在空格上遇到了麻烦。

如何输入二进制字节来表示enter键?

我只是输入'/‘和'n’字符串吗?

理想情况下,我希望能够将整个文本文件转换为二进制字符串,并能够再次将其转换回来。显然,如果我用python脚本来完成这个任务,那么选项卡就会被搞乱,程序就会被破坏。

C语言能更好地完成这些工作吗?

显然,C程序在没有空格的情况下仍然可以运行,而python则不能。

简而言之,我需要知道如何用二进制表示'tab‘和'enter’键,以及如何创建函数将它们转换为二进制。bin(ord(‘\n’)是好的吗?

EN

回答 1

Stack Overflow用户

发布于 2015-01-13 00:18:06

那么简单一点呢:

代码语言:javascript
复制
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 =

代码语言:javascript
复制
lookup = {c: bin(c))[2:].zfill(8) for c in range(256)}
bits = [lookup[ord(c)] for c in bytes]

或者,lookup也可以是一个列表:

代码语言:javascript
复制
lookup = [bin(c))[2:].zfill(8) for c in range(256)]

所有这些都应该是一样的,选择最适合你的速度和清晰的组合!)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27912757

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档