在as3中写一个16位的bytearray

时间:2011-06-16 16:28:32

标签: actionscript-3 bytearray

我正在尝试将以下16位WAV标头数据写入16位字节阵列。有谁知道如何实现这一目标?我正在使用动作3。

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


我正在做的是尝试将正确的bytearray传递给这个mp3编码器(http://code.google.com/p/flash-kikko/)以使其写出一个mp3。如果我使用他们的例子,我可以通过filereference打开一个16位WAV文件,并将该bytearray传递给编码器以导出mp3。但是,我想创建自己的bytearray并传入它并创建mp3。使用HxD,我复制了同一个16位WAV文件的页眉和页脚,并将其作为bytearray粘贴到flash中,但是当我将它传递给编码器时,它会冻结编译并出现以下错误:

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

所以,我认为我的问题在于我如何格式化我传入的bytearray ...任何想法?再次感谢您的帮助!

2 个答案:

答案 0 :(得分:3)

我假设你想要所有18个字节(你的问题是16位)?

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

等。只需按照剩下的15个字节的模式。

您显示的两个数字中的每一个,例如“5A”实际上表示十六进制的字节。需要0x来告诉Flash你正在使用十六进制值 - 否则,AS3会认为你正在使用十进制值。

答案 1 :(得分:3)

为什么不自动完成繁琐的工作...

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));
}

现在字节包含您的标题。