【发布时间】:2016-01-11 08:20:49
【问题描述】:
我有一个像str_of_bytes = b'\x20\x64\x20' 这样的字节串,我想从中提取第二个元素。
如果我做str_of_bytes[1],我得到的是int100。
如何获得b'\x64',而无需将int 重新转换为bytes?
【问题讨论】:
标签: python python-3.x byte
我有一个像str_of_bytes = b'\x20\x64\x20' 这样的字节串,我想从中提取第二个元素。
如果我做str_of_bytes[1],我得到的是int100。
如何获得b'\x64',而无需将int 重新转换为bytes?
【问题讨论】:
标签: python python-3.x byte
将其提取为一个范围:
str_of_bytes[1:2]
结果:
b'd'
这和b'\x64'一样
请注意,我假设您使用的是 Python 3。Python 2 的行为有所不同。
【讨论】:
str_of_bytes[1]在这种情况下不起作用?不是str_of_bytes[1:2] == str_of_bytes[1]吗?
print(str_of_bytes[1:2], type(str_of_bytes[1:2])) 和 print(str_of_bytes[1], type(str_of_bytes[1]))
int。另一方面,范围产生bytes。
bytes 类型,因为我认为它比将值转换为int 更有效,这是真的吗?
bytes 的主要动机是能够对文件执行 I/O,而无需对数据进行字符串解释。它们基本上是小(字节大小)整数(在 0-255 范围内,即 8 位数据)的打包数组。它们节省内存,但如果您真的想解释或操作数据(而不是简单的副本),您将需要解压缩它。