tMC*_*tMC 7 python string bit-manipulation
这失败了,这并不奇怪:
>>> 'abc' << 8
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for <<: 'str' and 'int'
>>>
Run Code Online (Sandbox Code Playgroud)
ascii abc
等于011000010110001001100011
或6382179
是否有一种方法可以将它移动一些任意数量,这样'abc' << 8
会是01100001011000100110001100000000
什么?
其他按位操作怎么样?'abc' & 63
= 100011
等?
您可能需要的是bitstring模块(请参阅http://code.google.com/p/python-bitstring/).它似乎支持按位运算以及一些其他位数组操作.但是你应该小心地将字节输入(例如b'abc'
或bytes('abc')
),而不是字符 - 字符可以包含Unicode并占用多个字节.
对字符串执行按位运算没有任何意义.您可能希望使用该struct
模块将字符串转换为数字:
>>> import struct
>>> x = 'abc'
>>> x = '\x00' * (4-len(x)) + x
>>> number = struct.unpack('!i', x)[0]
>>> number
6382179
Run Code Online (Sandbox Code Playgroud)
然后,您可以执行所有操作number
.当(if)你想要一个字符串回来时,你可以做到struct.pack('!i', number)
.
归档时间: |
|
查看次数: |
13235 次 |
最近记录: |