2016-09-12 5 views
5

Notwendigkeit, eine Base64-Zeichenfolge mit Javascript in Hexadezimal konvertieren.Decode Base64 zu Hexadezimal Zeichenfolge mit Javascript

Beispiel:

var base64Value = "oAAABTUAAg==" 

Need Konvertierungsmethode

Ausgang (entschlüsselten Daten (hexadezimal)) A0000005350002

Ich weiß, das ist richtig, weil ich diese Website voll umfänglich nutzen können http://tomeko.net/online_tools/base64.php?lang=en

und Punch in Base64 String von oAAABTUAAg== und erhalten A0000005350002

Was habe ich versucht?

https://github.com/carlo/jquery-base64
https://jsfiddle.net/gabrieleromanato/qaght/

Ich habe eine Menge Fragen

Antwort

5

atob() gefunden charCodeAt dann() werden Sie binäre & toString (16) geben Sie hex geben.

function base64toHEX(base64) { 
 

 
    var raw = atob(base64); 
 

 
    var HEX = ''; 
 

 
    for (i = 0; i < raw.length; i++) { 
 

 
    var _hex = raw.charCodeAt(i).toString(16) 
 

 
    HEX += (_hex.length==2?_hex:'0'+_hex); 
 

 
    } 
 
    return HEX.toUpperCase(); 
 

 
} 
 

 
console.log(base64toHEX("oAAABTUAAg=="));

+0

Hier ist ein Einzeiler es6 umkehren mit: hexToB64 = hex => btoa (String.fromCharCode (... Array.apply (null, Array (hex .length/2)). map ((_, i) => parseInt (hex [i * 2] + hex [i * 2 + 1], 16)))) – SlimSim

5

Vorausgesetzt, dass Sie die hexadezimale Darstellung als String wollen, die window.atob function (in den meisten modernen Browsern) ist der erste Schritt - es wird Ihre Base64-String in eine ASCII-Zeichenfolge konvertieren, wobei jeder Das Zeichen steht für ein Byte.

An diesem Punkt teilen Sie die Zeichenfolge, greifen Sie den Zeichencode jedes Zeichens, und konvertieren Sie , dass zu einer links aufgefüllten Basis-16-Zeichenfolge.

function base64ToBase16(base64) { 
 
    return window.atob(base64) 
 
     .split('') 
 
     .map(function (aChar) { 
 
     return ('0' + aChar.charCodeAt(0).toString(16)).slice(-2); 
 
     }) 
 
    .join('') 
 
    .toUpperCase(); // Per your example output 
 
} 
 

 
console.log(base64ToBase16("oAAABTUAAg==")); // "A0000005350002"

(Or try it on JSBin)