Как я могу преобразовать строку в байты в Python, как узел js - PullRequest
0 голосов
/ 24 декабря 2018

Я использовал двоичные данные с Buffer в узле js следующим образом.

<Buffer 01 05 01 4c 61 60>

Как я могу использовать это в Python?

Я пытался сделать это, но ... результат был

    a = a.to_bytes(2,'big')
    b = b.to_bytes(1, 'big')
    result = a + b + str.encode(c)

b "\ x01 \ x05 \ x01 {'Lang': 'En'}"

или

codecs.encode(result,'hex')

b "0105014c6160"

  1. Почему они показывают мне escape-символ?Как я могу удалить это?
  2. первый и последний это те же данные?

1 Ответ

0 голосов
/ 24 декабря 2018

Исходя из названия и вашей формулировки, звучит так, будто вы ищете что-то похожее на node.js Buffer.from , который возвращает изменяемый массив, например двоичные данные.

Python имеетфункция bytearray , которая позволяет изменять данные

>>> a = bytearray('hello, world!', encoding='utf8')
>>> a[0]
104
>>> a[0] = 105
>>> x
bytearray(b'iello, world!')

Если вам не нужна изменчивость, вы можете просто закодировать строку в байты 'hello, world!'.encode('utf8') (при условии, что вы работаете с кодировкой)with is utf8).

Вы можете переопределить способ, которым он представлен следующим образом.

>>> class MyBytes(bytes):
...     def __repr__(self):
...         return '<Bytes {}>'.format(' '.join([hex(i) for i in self]))
...
>>> MyBytes('hello', encoding='utf8')
<Bytes 0x68 0x65 0x6c 0x6c 0x6f>
...