2017-12-04 16 views
2

나는 일반 텍스트로 기본적으로 32 비트, 빅 엔디안 부호없는 정수입니다처럼 배열을 가지고이 32 비트는 엔디안 배열 자체는 이진 base64로 AAAAAQAAAAIAAAADAAAABAAAAAUAAAAGAAAABwAAAAgAAAAJAAAACgAAAAsAAAAMAAAADQAAAA4AAAAPAAAAEA==로 인코딩 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16]64 기수는 바이너리 디코드 32 비트 배열

그건

처음에 내가 하늘로부터받은 경우, 어떻게 모든 것을 해독하여 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 네 개의 문자 설 포닐 걸릴 수 있습니다 나는이 라이브러리의 특정 발견 그러한 목적으로 - 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); 
};