Как в Python сконвертировать 24 битный integer в little-endian bytes?
Есть значение аудио сэмпла в формате int 24 bit, которое надо перевести в little-endian последовательность из 3х байт (строка из 3 символов).
Хочу сделать функцию, которая делала бы универсальное преобразование, независимо от битности. А пока что получается, что если число слишком маленькое, то на выходе может получится 1, или 2 байта – вместо 3х, и в WAV пишутся неверные данные. Пробовал struct – не работает с 24 битами. Версия Python 2.7.
def to_bytes(n, length, endianess='big'):
h = '%x' % n
s = ('0'*(len(h) % 2) + h).zfill(length*2).decode('hex')
return s if endianess == 'big' else s[::-1]