b & 0x80
我不确定b
正在做什么,我假设它附加了{{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'
0x80
为128
的十六进制,其中包含二进制字符串'10000000'
。所以104和128的&
是两列中的数字都是1
的列,恰好是无,所以结果是零:
'01101000'
'10000000'
--------
'00000000'
以下是128
和129
之间的示例,它会得到答案128
:
'10000000'
'10000001'
--------
'10000000'