На Python 3 я получаю сообщение об ошибке.На Python 2 он работает без ошибок, поэтому я предполагаю, что вы также используете Python 2.
Я проверил это
data = 'A'
result = bytes_data_to_original_data(original_data_to_bytes_data(data))
print(result)
print(type(data), type(result))
, и он отображает тот же текст и тот же тип
Но когда я проверяю
print(data == result)
print(len(data), len(result))
print(repr(data), repr(result))
, тогда это показывает, что data
и result
отличаются
False
(1, 4)
("'A'", "'A\\x00\\x00\\x00'")
Если я использую "B"
(байт) вместо"i"
(целое число) в коде
struct.pack('B', int(i, 2))
, тогда я получаю те же значения - поэтому волна должна звучать одинаково.
это также работает, если я использую байты b"A"
вместо строки "A"
, потому что байты протона Python2 являются строкой.
def bytes_data_to_original_data(bytes_data):
"""
params: bytes_data - data, list of strings.
returns: original data.
"""
original_data = ""
for i in bytes_data:
original_data += struct.pack('B', int(i, 2))
return original_data
РЕДАКТИРОВАТЬ: В struct.pack()
я изменил 'b'
(для которого нужны значения -128..127) на 'B'
(который работает со значениями 0..255).