2017-02-05 8 views
1

私はアンドロイドデバイスで生成し、base64にエンコードし、サーバーに送信し、JavaScriptを使用してウェブ上に表示するバイト配列を持っています。ただし、バイト配列は一致しません。クロスプラットフォームベース64バイト配列エンコーディング

例えば、バイト配列:

-39,86,-91,26,77,98,-3,108,83,-108,-53,-8,-102,-39,-42,-106,-90,70,122,26,43,-46,82,124,-4,-116,-51,-92,100,-104,57,9,-127,0 

アンドロイド側エンコーディング:

import android.util.Base64; 

Base64.encodeToString(byteArray, Base64.DEFAULT); 

結果の文字列:

2ValGk1i/WxTlMv4mtnWlqZGehor0lJ8/IzNpGSYOQmBAA== 

ジャバスクリプト復号:

var decoded = atob(encodedString); 
var bytes = []; 

for (var i = 0; i < decoded.length; i++) { 
    bytes.push(decoded.charCodeAt(i)); 
} 

結果のバイト配列:負でなければなりません

217,86,165,26,77,98,253,108,83,148,203,248,154,217,214,150,166,70,122,26,43,210,82,124,252,140,205,164,100,152,57,9,129,0 

すべての数値は、256が追加されていて。これをどうやって解決するのですか?

注:アンドロイド側をデコードすると、期待通りの結果が得られます。

答えて

0

は私が手動ループ内でそれを補正することで問題を回避持っている:私はまだこれを達成するための適切な方法を探しています

for (var i = 0; i < decoded.length; i++) { 
    var currentChar = decoded.charCodeAt(i); 
    if (currentChar < 128) 
     bytes.push(currentChar); 
    else 
     bytes.push(currentChar - 256); 
} 

、誰かが投稿してください知っている場合。

関連する問題