Написание 16-битного байтового массива в as3 - PullRequest
2 голосов
/ 16 июня 2011

Я пытаюсь записать следующие 16-битные данные WAV-заголовка в 16-битный байтовый массив. Кто-нибудь знает, как этого добиться? Я использую Actionscript 3.

52 49 46 46 54 00 13 00 57 41 56 45 62 65 78 74 5A 02


Я пытаюсь передать правильный байтовый массив в этот mp3-кодировщик (http://code.google.com/p/flash-kikko/), чтобы заставить его записывать mp3. Если я использую их пример, я могу открыть 16-битный файл WAV через ссылку на файл и передать этот bytearray кодировщику для экспорта mp3. Но я хочу создать свой собственный bytearray, передать его и создать mp3. Используя HxD, я скопировал верхний и нижний колонтитулы того же 16-битного WAV-файла и вставил его в мигать как bytearray, но когда я передаю его в кодировщик, он останавливает компиляцию, и я получаю следующую ошибку:

  Error #1502: A script has executed for longer than the default timeout period of 15 seconds.

Итак, я думаю, что моя проблема в том, как я форматирую байтовый массив, который я передаю ... какие-нибудь идеи? Еще раз спасибо за помощь!

Ответы [ 2 ]

3 голосов
/ 16 июня 2011

Почему бы не автоматизировать утомительную работу ...

var header:String = "52 49 46 46 54 00 13 00 57 41 56 45 62 65 78 74 5A 02";

var headerParts:Array = header.split(" ");
var bytes:ByteArray = new ByteArray();

for each (var s:String in headerParts)
{
    bytes.writeByte(parseInt(s, 16));
}

Теперь байты содержат ваш заголовок.

3 голосов
/ 16 июня 2011

Я предполагаю, что вы хотите все 18 байтов (ваш вопрос говорит о 16 битах)?

var byteArray:ByteArray = new ByteArray();
byteArray.writeByte(0x52);
byteArray.writeByte(0x49);
byteArray.writeByte(0x46);

и т. Д.Просто следуйте шаблону для оставшихся 15 байтов.

Каждая из двух цифр, которые вы показываете, например, "5A" фактически представляет байт в шестнадцатеричном формате.0x необходим для того, чтобы сообщить Flash, что вы используете шестнадцатеричные значения, иначе AS3 подумает, что вы используете десятичную дробь.

...