Python Forum

Full Version: byte string in python2
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
i want to test something in python2.  to do the test i need a byte string.  i don't need a byte string type.  i only need some way to get a byte string value.
you can iterate through the string, and run  each character through ord():
example:
k = 'kryptonite'
' '.join(format(ord(letter), 'b') for letter in k)
result:
Output:
'1101011 1110010 1111001 1110000 1110100 1101111 1101110 1101001 1110100 1100101'
or for hex:
k = 'kryptonite'
' '.join(format(ord(letter), 'x') for letter in k)
Output:
'6b 72 79 70 74 6f 6e 69 74 65'
i mean byte string as in b'foo' where for that value, repr()[0] would == 'b'.  but just simply b'foo' doesn't do it.  i have see b' stuff come out sometimes in python2 but that was before i switched to doing things in python3 which makes a proper type for this stuff.  i'm want to see how some code i wrote behaves when given such a value while running under python2.
bytes objects really only exist in Python 3.x.
bytes added in Python 2.6 is an alias to the str type,
that only exists to help writing portable code between Python 2 and 3.

The Doc for this 2.6:
Quote:Python 2.6 adds bytes as a synonym for the str type, and it also supports the  b'' notation.

The 2.6 str differs from 3.0’s bytes type in various ways; most notably, the constructor is completely different.
n 3.0, bytes([65, 66, 67]) is 3 elements long, containing the bytes representing ABC; in 2.6,  bytes([65, 66, 67]) returns the 12-byte string representing the str() of the list.

The primary use of bytes in 2.6 will be to write tests of object type such as isinstance(x, bytes).
his will help the 2to3 converter, which can’t tell whether 2.x code intends strings to contain either characters or 8-bit bytes;
ou can now use either bytes or  str to represent your intention exactly, and the resulting code will also be correct in Python 3.0.
ok, so the conditions i wanted to test will not actually happen.