Форум сайта python.su
![[RSS Feed] [RSS Feed]](/static/djangobb_forum/img/feed-icon-small.png) 
			 
							 0
  0   
								
								Доброго времени суток!В питоне я новчиек, так что не судите строго.
Использую модуль pyserial, для общения со схемой с микроконтроллером через com порт.
При считывании данных, для примера:
 s=serial.Serial(0);
 dataRead=s.read(1);
получаю в dataRead считанные значени в виде строк, к примеру ‘\xfe’. Тк с мк я передаю не текст, хочется как-то вытащить из этого формата собственно само число, те к примеру ‘\xfe’-> 0xFE.
Было бы ‘0xfe’ -нет проблем, но с escape как то не получается.
Подскажите пожалуйста как это сделать? :(
UPD:
прошу прощени:)
Стоило только отчаяться и запостить вопрос на форуме как тут же нашел ответ(вроде).
ответом послужила: ord()
Взято с http://code.activestate.com/recipes/510399/.
Отредактировано (Дек. 13, 2009 15:07:02)
Офлайн
 
							 3
  3   
								
								>>> x = '\xfe'
>>> ord(x)
254
>>> hex(ord(x))
'0xfe'
>>>
Офлайн
 
							 72
  72   
								
								import struct
Офлайн
 
							 20
  20   
								
								Это конечно не то что нужно, но вещь полезная и не очевидная (пристальнее вглядываемся в кодировки, поддерживаемые пакетом encodings):
>>> s1 = '\xfe'
>>> s2 = r'\xfe'
>>> s1 == s2
False
>>> s1 == s2.decode('string-escape')
True
>>> ord(s1)
254
>>> ord(s2.decode('string-escape'))
254
Отредактировано (Дек. 14, 2009 06:54:16)
Офлайн
 
							 0
  0   
								
								Ещё один корявый способ:
In [1]: from binascii import b2a_hex
In [2]: '0x' + b2a_hex('\xfe')
Out[2]: '0xfe'
Офлайн
![[RSS Feed] [RSS Feed]](/static/djangobb_forum/img/feed-icon-small.png)