Unicode中93号的重要性是什么?

时间:2011-07-14 02:43:30

标签: javascript unicode bit-manipulation

由于目前没有通用的方法从JavaScript中读取音频轨道中的实时数据,因此我使用较小的library/API来读取我从MP3离线转换的文本文件中的音量数据。

字符串看起来像这样

!!!!!!!!!!!!!!!!!!!!!!!!!!###"~{~||ysvgfiw`gXg}i}|mbnTaac[Wb~v|xqsfSeYiV`R
][\Z^RdZ\XX`Ihb\O`3Z1W*I'D'H&J&J'O&M&O%O&I&M&S&R&R%U&W&T&V&m%\%n%[%Y%I&O'P'G
'L(V'X&I'F(O&a&h'[&W'P&C'](I&R&Y'\)\'Y'G(O'X'b'f&N&S&U'N&P&J'N)O'R)K'T(f|`|d
//etc...

并且这个想法基本上是在歌曲中的给定点处,文本文件中对应点处的字符的Unicode编号产生表示音量的标称值。

库使用以下内容(此处简化)转换数据(在本例中为立体声轨道):

getVolume = function(sampleIndex,o) {
    o.left = Math.min(1,(this.data.charCodeAt(sampleIndex*2|0)-33)/93);
    o.right = Math.min(1,(this.data.charCodeAt(sampleIndex*2+1|0)-33)/93);
    }

我想先了解文件的编码方式,以及我如何在这里使用它。

9333的重要性是什么?

按位|的目的是什么?

这是移植信息的常用方法(即,它是否有名称),还是有更好的方法来实现?

4 个答案:

答案 0 :(得分:2)

该文件中的字符范围看起来是!~!的ASCII码为33,~的ASCII码为126. 126-33 = 93。

答案 1 :(得分:1)

3393用于规范化!~之间的值。

enter image description here

var data = '!';
Math.min(1,(data.charCodeAt(0*2)-33)/93); // will yield 0

var data = '~';
Math.min(1,(data.charCodeAt(0*2)-33)/93); // will yield 1

var data = '"';
Math.min(1,(data.charCodeAt(0*2)-33)/93); // will yield 0.010752688172043012

var data = '#';
Math.min(1,(data.charCodeAt(0*2)-33)/93); // will yield 0.021505376344086023

// ... and so on

由于|0sampleIndex*2在传递非整数sampleIndex*2+1时会产生非整数值,因此存在sampleIndex|0会截断小数部分,以防有人发送格式不正确的sampleIndex(即非整数)。

答案 2 :(得分:0)

使用0进行按位OR会将LHS上的数字截断为整数。不过对你问题的其余部分不确定,抱歉。

93和33是字符“]”和“!”的ASCII码(不是unicode)分别。希望有所帮助。

答案 3 :(得分:0)

这将永远帮助你:

http://www.asciitable.com/

所有内容的ASCII代码。享受!