出于应用程序的具体原因,我需要准确地添加这两个字符' a,' (现在的Int16Array开头的一个和一个逗号)
目前我尝试使用此代码,但它似乎无法正常工作:
function convertFloat32ToInt16(buffer) {
var prefix = 'a,',
prefixLength = prefix.length / 2, // divided by 2 because we deal with 16 bits, not 8 bits
bufferLength = buffer.length,
totalLength = prefixLength + bufferLength,
arr = new Int16Array(totalLength),
i
for (i = 0; i < prefixLength; i = i + 2) {
arr[i] = prefix.charCodeAt(i) + prefix.charCodeAt(i + 1)
}
for (i = prefixLength; i < totalLength; i++) {
arr[i] = Math.min(1, buffer[i - prefixLength]) * 0x7FFF // convert to 16 bit
}
return arr.buffer
}
有什么建议我可以做得更好并修复上述代码吗?
非常感谢!
答案 0 :(得分:0)
如果您需要在其中存储随机字符,为什么要使用Int16Array
?你在问这个问题。
为什么不使用常规数组呢?将arr
的定义替换为arr = []
,并将buffer
的引用替换为arr
在任何情况下,如果要存储随机字符,则需要使用不同的数据结构。你总是可以让你的回报行像这样:
return {buffer: arr.buffer, type: prefix}