PySerial уже работает в байтах.Вам не нужно выполнять какие-либо преобразования строки-> байты, потому что PySerial не даст вам строку.Просто сохраните байтовые объекты, которые вам дает PySerial.
В вашем fake_serial_data
тесте len(fake_serial_data)
- это не количество байтов.fake_serial_data
- это не последовательность байтов, и спрашивать, сколько в нем байтов, все равно, что спрашивать, сколько пикселей в вашем доме или сколько карандаша в этих словах, которые вы читаете.
len(fake_serial_data)
- это число кодовых точек Unicode в fake_serial_data
, а len(encoded_fake_serial_data)
- это количество байтов в кодировке UTF-8 fake_serial_data
.Нет оснований ожидать однозначного соответствия между кодовыми точками Unicode и результирующими байтами.В UTF-8 кодовые точки выше 127 не отображаются на один байт.
Если вам нужна кодировка, которая отображает кодовые точки Unicode в диапазоне 0-255 на отдельные байты (и происходит сбой наКод Unicode указывает за пределы этого диапазона), есть latin1
, но, если вы хотите что-то подобное, это обычно означает, что вы делаете ошибку.