Я плохо разбираюсь в теме кодирования звука, но предполагаю, что все перечисленные значения должны регулярно следовать друг за другом. В этом случае определяем, сколько требуется бит для хранения каждого из значений, и все их кодируем единой пачкой байт постоянного размера. Если же некоторые из значений присутствуют в пачке не регулярно, то действуем по обстоятельствам. Возможно, в пачке из целого числа байт ещё имеются незадействованные биты. Тогда просто резервируем их под это значение. В противном случае резервируем один бит, сообщающий о присутствии или отсутствии этого опционального значения. Эти варианты напрашиваются первыми.
Эти закорючки не несут никакой полезной информации. Во-первых, есть непечатаемые символы, имеющие служебное назначение. Какой-то редактор может их отобразить, какой-то пропустит, какой-то интерпретирует особым образом. Например, обязательным образом интерпретируются символы переноса строк и табуляции, хотя даже в интерпретации переносов строк нет единого стандарта.
Возможно. Но чтобы что-то посоветовать и улучшить, нужны исходные данные, результат в шестнадцатеричном виде и описание того, как из первого получить второе. В противном случае какая-то обоснованная оценка вряд ли возможна.