Как преобразовать значение байта "b'27 '" в int 27 - PullRequest
0 голосов
/ 08 апреля 2019

Как получить число в байтовой переменной?

Я должен передать данные из Arduino в Raspberry Pi с серийным номером и Python.Мне удалось изолировать переменную, но ее тип - байты, как получить это в переменной int?

Переменная

b'27'

, но я хочу получить

27

Я пытался

print(int.from_bytes(b'\x27', "big", signed=True))

Но мне не удалось получить правильное число 27

Ответы [ 2 ]

3 голосов
/ 08 апреля 2019

Вы можете использовать decode, чтобы получить его в обычном str, а затем использовать int:

x = b'27'

y = int(x.decode()) # decode is a method on the bytes class that returns a string
type(y)
# <class 'int'>

В качестве альтернативы:

y = int(b'27')
type(y)
# <class 'int'>

За комментарий @ chepner,вы захотите отметить случаи, когда странное кодирование может нарушить последний подход, а для кодирования не-utf-8 это может нарушить оба

1 голос
/ 08 апреля 2019

В дополнение к полезному и практическому ответу, данному C.Nivs, я хотел бы добавить, что если бы вы хотели использовать int.from_bytes() для получения значения 27, вам нужно было бы сделать:

int.from_bytes(b'\x1B', "big", signed=True)

, потому что '\x27' на самом деле является шестнадцатеричным значением для значения 39. Есть множество таблиц преобразования онлайн, которые могут быть полезны для перекрестных ссылок десятичных и шестнадцатеричных значений.Эти две формы имеют только 1: 1 для значений меньше 10.

...