2017-03-07 50 views
1

怎样把以下转换包含Uint16Array 8位整数定期整数

var data = new Uint16Array([131, 220]); 

integer?预期值大约在970

+0

* “期望值大概在他'970'” *你怎么在这抵达值? – gyre

+0

从https://github.com/otland/forgottenserver/blob/cc8e15e9166359faa52d38823e679355a615ab23/src/protocollogin.cpp#L141,我知道值应在1090和1098之间 – Ultra

回答

1

基本上你需要减少数值乘以2 并切断第一位。

(这不是一般的转换,而是为这个特殊的目的。)

var data = new Uint16Array([131, 220]), 
 
    value = [].reduce.call(data, function (r, a) { 
 
     return (r << 8) + a; 
 
    }, 0) & ((1 << 15) - 1); 
 

 
console.log(value);

+0

东西是一般的转换机构可能,不管位数? – Rick

+0

@Arrow,实际上不是,因为它是一个特例。你可以测试它的其他数据,但它不应该如我所见。 –