Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python中二进制数据的长度_Python_Byte_Python 2.x - Fatal编程技术网

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)。

我正在使用Python。我试图确定二进制数据集中字节的正确长度

如果我给一个变量赋值二进制数据

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'
转换为bytestring
b'\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