Репликация создания байтовой строки, выполненной в Javascript, в Python 2.7. - PullRequest
0 голосов
/ 26 мая 2018

У меня есть функция, которую я отображаю из Javascript:

var commandBytes = [4,1,0,0,0,0, Math.floor(224 + (52/16)), 52 % 16];

... вот как у меня в Python:

data = bytearray([4,1,0,0,0,0, 224 + 52 // 16, 52 % 16])

... это то, что выводвыглядит как в IDLE:

bytearray(b'\x04\x01\x00\x00\x00\x00\xe3\x04')

... вот как выглядит исходный вывод при выводе Javascript в окно командной строки:

<Buffer 04 01 00 00 00 00 e3 04>

... первый выпуск IИмеется, что байты в IDLE, кажется, печатаются в шестнадцатеричном, а не фактическом числах.Во-вторых, несмотря на то, что я знаю, что мое соединение с машиной, которой я передаю команду, является хорошим, поскольку я получаю ответ, сама команда не работает.

Что мне нужно изменить, чтобы мой Pythonвывод повторяет мой вывод Javascript?

Спасибо

1 Ответ

0 голосов
/ 26 мая 2018

Вы можете легко изменить способ печати, создав собственный print_function или расширив bytearray и реализовав __str__() и / или __repr__(), например:

class ByteArray(bytearray):
    def __str__(self):
        return '<Buffer {}>'.format(' '.join(format(x, '02x') for x in self))

In []:
b = ByteArray([4,1,0,0,0,0, 224 + 52 // 16, 52 % 16])
print(b)

Out[]:
<Buffer 04 01 00 00 00 00 e3 04>
...