Length of binary data in python

62,943

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
Share:
62,943
Matthew
Author by

Matthew

BS in Computer Science from Embry-Riddle Aeronautical University MS in Information Technology from University of Maryland University College 9+ Years Cyber Officer in U.S. Air Force

Updated on October 16, 2020

Comments

  • Matthew
    Matthew over 3 years

    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...

  • Elliot Woods
    Elliot Woods over 6 years
    hmm.. would be good to answer the title though rather than the body text
  • wim
    wim over 5 years
    @ElliotWoods I've edited to put it first and foremost.