【发布时间】:2016-09-01 15:08:58
【问题描述】:
我想在 JavaScript 中将音频浮点数组转换为字节字符串。通过转换为字节,我期待一个两位数,然后我可以附加到一个字符串,请参阅此示例的输出:
Input: [0.0007124987314455211, 0.0005752402357757092, -0.0010658394312486053, -0.0004562278045341372 ,...]
Output: '\x02\x04\x35...'
但我得到的是 4 位数字。如何正确转换为字节?
function floatToByteString(input){
//first convert to 16 bit int array
var intarray = new Int16Array(input.length);
for (var i = 0; i < input.length; i++){
var s = Math.max(-1, Math.min(1, input[i]));
var newint = s < 0 ? s * 0x8000 : s * 0x7FFF;
intarray[i] = newint;
}
//second: convert 16 bit int array to little endian byte string
var bytestring = "";
for (var i = 0; i < input.length; i++){
var thisint = intarray[i]
var bytel = thisint & 0xff;
var byteb = (thisint >> 8) & 0xff;
bytestring += "\\x"+bytel + "" + byteb
}
return bytestring;
}
【问题讨论】:
标签: javascript arrays audio pcm endianness