我知道如何在Python中读取int内的位而不是如何在char上读取。
对于int,这个基本操作有效:a& (2 ** bit_index)。但是对于单个字符,它会给出以下错误消息:unsupported operand type(s) for &: 'str' and 'int'
如果这个“微妙”很重要,我也会使用以下字符串从对象中读取我的字符:
for my_char in my_string:
我强调这一点,因为可能是my_char实际上是一个长度为1的字符串而不是char,只是因为我对类型的python句柄知之甚少。
谢谢。
答案 0 :(得分:3)
您可以使用bytearray
而不是字符串。单个元素是整数,但您仍然可以在整体上进行基本的字符串操作:
>>> arr = bytearray('foo')
>>> type(arr[0])
<type 'int'>
>>> arr.replace('o', 'u')
bytearray(b'fuu')
答案 1 :(得分:2)
请改为:ord(a) & (2**bit_index)
。
在python中没有单独的字符类型,字符只是一个大小为1的字符串。因此,如果您想使用大小为1的字符串执行位操作,可以使用ord()
将其转换为int
。
答案 2 :(得分:1)
Python实际上没有char类型。你有一个长度为1的字符串。您需要先将其转换为int,然后才能在其中应用这些运算符。取决于my_string
这可能有用的内容:int(my_char, 10)
答案 3 :(得分:1)
正确 - 它是一个长度为1的字符串,而不是字符。
将字符串转换为整数列表:
>>> s = "hello world"
>>> l = [ord(c) for c in s]
然后,您可以在特定偏移量上使用按位运算符:
>>> l[1] = l[1] << 1
>>> print "".join(chr(c) for c in l)
h?llo world