将Python str/unicode对象转换为二进制/十六进制blob

2024-05-05 13:34:09 发布

您现在位置:Python中文网/ 问答频道 /正文

有没有一种简单的方法可以获得表示为大二进制数(或十六进制数)的str/unicode对象?

我一直在读一些相关问题的答案,但没有一个适合我的情况。

我试过使用STL中的struct模块,但它没有按预期工作。像在二进制文件中一样,字符也显示为字符。

我在尝试一些不可能的事情吗?

示例:

def strbin(inp):
    # sorcery!
    return out

>> print strbin("hello")
# Any of these is cool (outputs are random keystrokes)
0b1001010101010000111001110001...
0xad9f...

Tags: 模块文件对象方法答案示例unicode二进制
3条回答

你可以试试^{}

>>> import bitarray
>>> b = bitarray.bitarray()
>>> b.fromstring('a')
>>> b
bitarray('01100001')
>>> b.to01()
'01100001'
>>> b.fromstring('pples')
>>> b.tostring()
'apples'
>>> b.to01()
'011000010111000001110000011011000110010101110011'
def strhex(str):
    h=""
    for x in str:
        h=h+(hex(ord(x)))[2:]
    return "0x"+h

非常简单,不需要来自pypi的模块:

def strbin(s):
    return ''.join(format(ord(i),'0>8b') for i in s)

你需要Python2.6+来使用它。

相关问题 更多 >