python中二进制数据的长度
我正在使用Python。我试图确定二进制数据集中字节的正确长度 如果我给一个变量赋值二进制数据python中二进制数据的长度,python,byte,python-2.x,Python,Byte,Python 2.x,我正在使用Python。我试图确定二进制数据集中字节的正确长度 如果我给一个变量赋值二进制数据 x = "aabb".decode("hex") 那和我的一样吗 x = b'aabb' 如果是这样的话,你怎么得到它的字节数呢?(应该是2个字节) 当我尝试时: len(x) 但是我得到的是4而不是2 我担心x会变成一个字符串或其他我不理解的东西,因为Python中的数据类型非常流畅…二进制数据的长度只是len,而Python-2.x中的类型是str(或者Python-3.x中的bytes)。
x = "aabb".decode("hex")
那和我的一样吗
x = b'aabb'
如果是这样的话,你怎么得到它的字节数呢?(应该是2个字节)
当我尝试时:
len(x)
但是我得到的是4而不是2
我担心x会变成一个字符串或其他我不理解的东西,因为Python中的数据类型非常流畅…二进制数据的长度只是
len
,而Python-2.x中的类型是str
(或者Python-3.x中的bytes
)。但是,您的对象'aabb'
不包含两个字节0xaa和0xbb,而是包含与ASCII“a”和“b”字符对应的4个字节:
>>> bytearray([0x61, 0x61, 0x62, 0x62])
bytearray(b'aabb')
>>> bytearray([0x61, 0x61, 0x62, 0x62]) == 'aabb'
True
这可能就是您实际寻找的等价物:
>>> 'aabb'.decode('hex') == b'\xaa\xbb'
True
以下各项均相等(且长度2
):
当我解码(“十六进制”)时,len(x)返回
2
。这不是它在您的机器上返回的吗?“aabb”。decode(“hex”)==b'aabb'
返回False。你对这两种形式相等的假设是错误的。凯文,你是正确的,只有当我做x=b'aabb'时,我才能得到长度4,所以问题是我猜b'aabb'实际上做什么?在Python 2中,b'aabb'
与'aabb'
相同,但在Python 3中它们不同。另外,Python3中的decode(“hex”)会引发AttributeError:'str'对象没有属性decode'。和b“aabb”。在Python3中解码(“hex”)
引起LookupError:“hex”不是文本编码;使用codecs.decode()处理任意编解码器
将'aabb'
转换为bytestringb'\xaa\xbb'
,在两个版本中都可以使用:导入binascii;binascii.unexlify(“aabb”)
hmm。。最好回答标题而不是正文text@ElliotWoods我把它放在了第一位。
>>> s1 = 'aabb'.decode('hex')
>>> s2 = b'\xaa\xbb'
>>> s3 = bytearray([0xaa, 0xbb])
>>> s4 = bytearray([170, 187])
>>> s1 == s2 == s3 == s4
True