使用此代码获取字符串并将其转换为二进制:
bin(reduce(lambda x, y: 256*x+y, (ord(c) for c in 'hello'), 0))
Run Code Online (Sandbox Code Playgroud)
这个输出:
0b110100001100101011011000110110001101111
Run Code Online (Sandbox Code Playgroud)
哪个,如果我把它放到这个网站(在右边的网站上),我得到了我的hello
回信息.我想知道它使用什么方法.我知道我可以将二进制字符串拼接成8位,然后将其与相应的值bin(ord(character))
或其他方式匹配.真的在寻找更简单的东西.
在Python 2.6(及更早版本)中hex()
,oct()
内置函数可以通过定义__hex__
和__oct__
特殊函数在类中重载.但是,没有一个__bin__
特殊的函数来重载Python 2.6的新bin()
内置函数的行为.
我想知道是否有任何方式可以灵活地重载bin()
,如果不是,我想知道为什么不一致的界面?
我知道__index__
可以使用特殊功能,但这不灵活,因为它只能返回一个整数.我的特定用例来自bitstring模块,其中前导零位被认为是重要的:
>>> a = BitString(length=12) # Twelve zero bits
>>> hex(a)
'0x000'
>>> oct(a)
'0o0000'
>>> bin(a)
'0b0' <------ I want it to output '0b000000000000'
Run Code Online (Sandbox Code Playgroud)
我怀疑没有办法实现这一目标,但我认为这不会有问题!