Length of binary data in python

为君一笑 提交于 2019-12-11 01:39:15

问题


I am using Python. I am trying to determine the correct length of bytes in a binary set of data.

If I assign a variable the binary data...

x = "aabb".decode("hex")

is that the same as

x = b'aabb'

And if so, how do you get how many bytes that is? (It should be 2 bytes)

When I try:

len(x)

I get 4 instead of 2 though...

I am worried that x is turned into a string or something else I don't understand because the data types are so fluid in Python...


回答1:


The length of binary data is just the len, and the type is str in Python-2.x (or bytes in Python-3.x). However, your object 'aabb' does not contain the two bytes 0xaa and 0xbb, rather it contains 4 bytes corresponding with ASCII 'a' and 'b' characters:

>>> bytearray([0x61, 0x61, 0x62, 0x62])
bytearray(b'aabb')
>>> bytearray([0x61, 0x61, 0x62, 0x62]) == 'aabb'
True

This is probably the equivalence you were actually looking for:

>>> 'aabb'.decode('hex') == b'\xaa\xbb' 
True

The following items are all equal (and length 2):

>>> s1 = 'aabb'.decode('hex')
>>> s2 = b'\xaa\xbb'
>>> s3 = bytearray([0xaa, 0xbb])
>>> s4 = bytearray([170, 187])
>>> s1 == s2 == s3 == s4
True


来源:https://stackoverflow.com/questions/40726217/length-of-binary-data-in-python

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!