2017-01-13 8 views
0

私は、JavaのBigIntegerクラスを使用して希望の出力を与えるJavaプログラムを作成しました。大きな整数からバイトへの配列JavaScript

[37、61、63、-76、104、-96、-30、70、119、-62、-118、98、75、次の出力を有する

String key = "253D3FB468A0E24677C28A624BE0F939"; 
byte[] array = new BigInteger(key, 16).toByteArray(); 
System.out.println(Arrays.toString(array)); 

-32、-7、57]

JavaScriptを使用して同じようにしてみました。 Big Intライブラリを使用しました:https://github.com/peterolson/BigInteger.js 16進数値が長すぎます。

var q = new bigInt("253D3FB468A0E24677C28A624BE0F939", 16); 
console.log(q.toString()); 

var out = q.toString(); 
var bytes = []; 

for (var i = 0; i < out.length; ++i) { 
var code = out.charCodeAt(i); 
bytes = bytes.concat([code]); 
} 
console.log(bytes); 

バイト= [52、57、52、57、57、52、53、56、48、51、55、54、54、55、55、51、50、49、49、

どのようにして同じJavaを取得できますか? JavaScriptを使って出力しますか?おかげで多く

答えて

1

あなたはライブラリが必要ありません。ただ、各バイトを解析し、(Javaの署名バイトを模倣するためにいくつかの操作に)配列に追加します。

var q = '253D3FB468A0E24677C28A624BE0F939'; 
var bytes = []; 
for (var i = 0; i < q.length; i += 2) { 
    var byte = parseInt(q.substring(i, i + 2), 16); 
    if (byte > 127) { 
     byte = -(~byte & 0xFF) - 1; 
    } 
    bytes.push(byte); 
} 
console.log(bytes); 
// [37, 61, 63, -76, 104, -96, -30, 70, 119, -62, -118, 98, 75, -32, -7, 57] 
1

はこれを試してみてください:

var input = "253D3FB468A0E24677C28A624BE0F939"; 
var output = ""; 
for (var i = 0; i < input.length; i += 2) { 
    var value = parseInt(input.substr(i, 2), 16); 
    output += ", " + (value < 128 ? value : value - 256); 
} 
output = "[" + output.substr(2) + "]"; 
1

あなたが負のためnumbers > 127を調整するカスタム変換を使用することができます数字。

var key = "253D3FB468A0E24677C28A624BE0F939", 
 
    bytes = key.match(/../g).map(function (a) { 
 
     var i = parseInt(a, 16) 
 
     return i >> 7 ? i - (1 << 8) : i; 
 
    }); 
 

 
console.log(bytes);

関連する問題