2017-03-07 56 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,實際上不是,因爲它是一個特例。你可以測試它的其他數據,但它不應該如我所見。 –