2016-12-21 8 views
1

にJavaからビット演算を使用してJavaコードを変換すると、私はここに は、元のJavaコードで、同じように動作しません。このビット操作に入った:Javaスクリプトに私はJavaコードの再書いていますJavaScriptコード

これはJavaScriptのコードである [-61]

var bos = []; 
var x = 451; 
bos.push(x & 0xFF); 

これが私のサイズの一つのセルを与える私に一つのセルサイズの配列を与える

ByteArrayOutputStream bos = new ByteArrayOutputStream(); 
bos.reset(); 
short x = 451; 
bos.write(x & 0xFF); 
byte[] bytesArr = bos.toByteArray(); 

配列:[195]

私は451のほかにいくつかの数字があり、変換がうまくいきます。何が欠けていますか?

+0

あなたはGWTのコンパイル作ってみましたがありますか?より大きなコードベースがあれば、あなたを助けることができます。 –

答えて

3

JavaScriptは固定長の整数ではなく、ビット数値演算子(自動的に32ビット整数として扱う)を使用して8ビットを符号拡張する必要があります。

var bos = []; 
 
var x = 451; 
 
bos.push(((451 & 0xFF) << 24) >> 24); 
 

 
console.log(bos);

またはより良いまだ、(あなたが最初にかかわらず、あなたの配列のサイズを知っておく必要があります)型指定された配列を使用しています。

var bos = new Int8Array(1); 
 
bos[0] = 451; 
 

 
console.log(bos);

関連する問題