这个python char数组发生了什么

时间:2016-10-15 14:40:37

标签: python-2.7 operators

b & 0x80

我不确定b正在做什么,我假设它附加了{{1}}字节数组?

1 个答案:

答案 0 :(得分:0)

你的大部分代码都是正确的:

str = "hello this is a string"
buffer = map(ord,str)
print buffer

缓冲区是一个列表,其中str中的每个字符都被更改为ascii值(即使空格被转换,它们的值为32):

[104, 101, 108, 108, 111, 32, 116, 104, 105, 115, 32, 105, 115, 32, 97, 32, 115, 116, 114, 105, 110, 103]

下一行只是将b设置为此列表的第一个索引,因此b只是一个int,而不是int的列表。 parens并不重要:

b = (buffer[0])
bb = buffer[0]
print b,bb #prints: 104 104

&是一个按位“和”运算符,它通过获取两个数字并返回一个新数字,其中只有重叠位才能使用位。 104的二进制文件是:

print("{0:b}".format(104))
'01101000'

0x80128的十六进制,其中包含二进制字符串'10000000'。所以104和128的&是两列中的数字都是1的列,恰好是无,所以结果是零:

'01101000'
'10000000'
 --------
'00000000'

以下是128129之间的示例,它会得到答案128

'10000000'
'10000001'
 --------
'10000000'