将Python str/unicode对象转换为二进制/十六进制数据块
有没有简单的方法可以把一些字符串或Unicode对象表示成一个大的二进制数(或者十六进制数)呢?
我看了一些相关问题的回答,但没有一个适合我的情况。
我试着使用STL里的struct模块,但结果并没有达到我的预期。就像在二进制文件中,字符还是显示成字符。
我是在尝试一些不可能的事情吗?
举个例子:
def strbin(inp):
# sorcery!
return out
>> print strbin("hello")
# Any of these is cool (outputs are random keystrokes)
0b1001010101010000111001110001...
0xad9f...
5 个回答
1
当然可以!请看下面的内容:
在编程中,有时候我们会遇到一些问题,可能是因为代码写得不够清晰,或者是我们对某些概念理解得不够透彻。这时候,向其他人请教或者在网上寻找答案就显得特别重要。
比如说,如果你在写代码的时候遇到错误,首先要冷静下来,仔细检查你的代码。看看是不是有拼写错误,或者是某些地方的逻辑不对。很多时候,问题可能就藏在这些小细节里。
另外,学习编程的时候,记得多做练习。通过不断地写代码,你会慢慢熟悉各种语法和技巧。就像学骑自行车一样,开始的时候可能会摔倒,但只要坚持练习,就一定能掌握。
如果你在某个特定的编程语言上遇到困难,可以查找相关的教程或者视频,很多时候这些资源会用简单易懂的方式解释复杂的概念。
总之,编程是一项需要耐心和不断学习的技能。遇到问题时,不要气馁,慢慢来,总会找到解决办法的!
def strhex(str):
h=""
for x in str:
h=h+(hex(ord(x)))[2:]
return "0x"+h
7
这个方法很简单,不需要从pypi下载任何模块:
def strbin(s):
return ''.join(format(ord(i),'0>8b') for i in s)
你需要使用Python 2.6或更高版本才能运行这个。
20
你可以试试这个叫 bitarray
的东西:
>>> import bitarray
>>> b = bitarray.bitarray()
>>> b.fromstring('a')
>>> b
bitarray('01100001')
>>> b.to01()
'01100001'
>>> b.fromstring('pples')
>>> b.tostring()
'apples'
>>> b.to01()
'011000010111000001110000011011000110010101110011'