On 10/6/2013 6:47 PM, Robert Jackson wrote:
I am very new to python so I'll apologize up front if this is some
Welcome to a mostly great language.
boneheaded thing. I am using python and pyserial to talk to an embedded
pic processor in a piece of scientific equipment. I sometimes find the
when I construct the bytes object to write it adds an extra f to the
first byte.
For example if I have b'\x03\x66\x02\x01\xaa\xbb' it evaluates
to b'\x03f\x02\x01\xaa\xbb', which doesn't even seem valid.
Python (or at least cpython) uses ascii chars to display bytes when
possible. This is often helpful, but not always ;-0.
>>> b'\x66' == b'f'
True
When you have b'\x03\x66\x02\x01\xaa\xbb', which is the same as
b'\x03f\x02\x01\xaa\xbb', the latter is used for display. So you do not
really have a problem. Some various thing you can do to get various
printouts.
>>> b=b'\x03f\x02\x01\xaa\xbb'
>>> list(b)
[3, 102, 2, 1, 170, 187]
>>> ' '.join('%x' % (c,) for c in b)
'3 66 2 1 aa bb'
>>> ''.join('\\x%x' % (c,) for c in b)
'\\x3\\x66\\x2\\x1\\xaa\\xbb'
21 chars; each \\ represents one \ char,
--
Terry Jan Reedy
--
https://mail.python.org/mailman/listinfo/python-list