Python中的bytearray文档指出:
bytearray类型是0 <= x < 256范围内的可变整数序列。
但是下面的代码表明值可以>= 256。我存储了一个最大值为:2 ^ 9-1 = 512-1 = 511
的9位二进制数。
ba = bytes([0b111111111])
print '%s' % (ba)
9位二进制数以十进制511的形式打印出来。
[511]
我不知道预期的行为是什么,但我假设最高有效位会被舍弃以得到8位数字。
Python中的bytearray文档指出:
bytearray类型是0 <= x < 256范围内的可变整数序列。
但是下面的代码表明值可以>= 256。我存储了一个最大值为:2 ^ 9-1 = 512-1 = 511
的9位二进制数。
ba = bytes([0b111111111])
print '%s' % (ba)
[511]
我不知道预期的行为是什么,但我假设最高有效位会被舍弃以得到8位数字。
bytearray
或bytes
对象,你只是创建了一个包含'[511]'
的字符串,因为在Python 2中,bytes
只是str
的同义词。在Python 3中,你会得到一个错误信息:would。ValueError: byte must be in range(0, 256)
以下代码可在Python 2或Python 3中运行;请注意我传递的是8位数字,因此它在范围内。
ba = bytearray([0b11111111])
print(repr(ba))
输出
bytearray(b'\xff')
help(bytes)
,它会显示 str
帮助页面。 - Adam Van ProoyenValueError: byte must be in range(0, 256)
,256 这个值是被允许的,同时也包括了值为 0。这意味着一个字节有 257 种可能的取值。Python 总是让我印象深刻... - Rusty Gearrange(0, 256)
会产生256个数字,从0到255。同样地,"abcdef"[0:3]
是字符串"abc"
。几乎所有Python中的元素都使用这种约定。 - PM 2Ring代码:
a = 511
byte = a.to_bytes(byte length goes here, 'little')
解码:
a = int.from_bytes(byte, 'little')
print
语句。 - MooingRawr