2017-12-04 8 views
2

Iは基本的にテキスト形式で32ビットエンディアンアレイ自体はバイナリBASE64 AAAAAQAAAAIAAAADAAAABAAAAAUAAAAGAAAABwAAAAgAAAAJAAAACgAAAAsAAAAMAAAADQAAAA4AAAAPAAAAEA==で符号化されていることをこの[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16]BASE64バイナリデコード32ビットアレイ

よう32ビット、ビッグエンディアン符号なし整数が、である配列を得

最初に天国から受け取った場合、JavaScriptで理解できるプレーンテキスト表現にすべてをデコード/アンパックするにはどうすればいいですか?

ルビーで私は単純にJavaScriptでこの簡単なステップの同等はありBase64.decodeString#Unpack

encoded_string = 'AAAAAQAAAAIAAAADAAAABAAAAAUAAAAGAAAABwAAAAgAAAAJAAAACgAAAAsAAAAMAAAADQAAAA4AAAAPAAAAEA==' 

decoded_string = Base64.strict_decode64(encoded_string) 
    => "\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x03\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x06\x00\x00\x00\a\x00\x00\x00\b\x00\x00\x00\t\x00\x00\x00\n\x00\x00\x00\v\x00\x00\x00\f\x00\x00\x00\r\x00\x00\x00\x0E\x00\x00\x00\x0F\x00\x00\x00\x10" 

decoded_string.unpack('N*') #32-bit unsigned, network (big-endian) byte order 
=> [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16] 

使用することができます。

+0

https://developer.mozilla.org/en-US/docs/Web/API/WindowBase64/Base64_encoding_and_decodingこれはあなたが探しているツールである必要があります。 – Bellian

+0

これに[ruby]タグが付いているのはなぜですか? –

答えて

1

あなたが与えられた文字列をデコードし、いくつかの厳密な検索後ArrayBufferDataView

function getInt(string) { 
 
    var view = new DataView(new ArrayBuffer(4)), 
 
     i; 
 

 
    for (i = 0; i < string.length; i++) { 
 
     view.setUint8(i, string.charCodeAt(i)); 
 
    } 
 
    return view.getInt32(0); 
 
} 
 

 
var encodedData = 'AAAAAQAAAAIAAAADAAAABAAAAAUAAAAGAAAABwAAAAgAAAAJAAAACgAAAAsAAAAMAAAADQAAAA4AAAAPAAAAEA==', 
 
    decodedData = window.atob(encodedData), 
 
    result = [], 
 
    i = 0; 
 

 
while (i < decodedData.length) { 
 
    result.push(getInt(decodedData.slice(i, i += 4))); 
 
} 
 

 
console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }

+0

これに相当するノードコンソールがありますか? – arjun

+0

ノードがわかりません。 –

+1

'window.atob'の代わりに、' atob'パッケージと 'let atob = require( 'atob')'をインストールしてください。残りは変更なしで動作するはずです。 – Amadan

0

オーケーを使用して32ビット数にconveringための4つの文字ニル取ることができる私は、このライブラリの特定を見つけましたそのような目的に - https://www.npmjs.com/package/binary

また、他のエンコードを提供します

encoded_string = 'AAAAAQAAAAIAAAADAAAABAAAAAUAAAAGAAAABwAAAAgAAAAJAAAACgAAAAsAAAAMAAAADQAAAA4AAAAPAAAAEA==' 
let buffer = new Buffer(encoded_string, 'base64'); 
let arrayList = []; 
let binaryList = binary.parse(buffer); 
for (var i = 0; i <(buffer.length/4); i++) { 
    arrayList.push(binaryList.word32bu('a').vars.a); 
};