Упомянутый Марком Рэнсом порядок байтов является очевидной возможной проблемой. Вы должны это проверить.
Другая возможная проблема - расширение знака.
Если у вас есть подписанные сэмплы и вы манипулируете ими беззнакового типа, вы потеряете бит знака на всех отрицательных сэмплах.
Если ваш тип байта подписан, то вы получите расширение знака в старшем байте при загрузке byte0 и byte1, опять же не того, что вы хотите.
Соответствует ли тип quint16
фактическому типу образцов? Если нет, вы должны использовать тот же тип. Вы должны заставить пользователя использовать unsigned char
в качестве типа байта.
Обновление от информации в комментариях:
Чтобы проверить теорию расширения знака, измените:
n *= 0.5;
строка:
n = ((short) n) * 0.5;