2016-09-12 86 views
5

Konieczność przekonwertowania ciągu Base64 na szesnastkowy za pomocą javascript.Dekoduje Base64 na łańcuch szesnastkowy z javascript

Przykład:

var base64Value = "oAAABTUAAg==" 

metoda konwersji Need

wyjściowa (zakodowane dane (szesnastkowy)) A0000005350002

wiem, że to jest poprawna, bo mogę korzystać z tej strony http://tomeko.net/online_tools/base64.php?lang=en

i uderz w łańcuch Base64 z oAAABTUAAg== i uzyskaj A0000005350002

Co próbowałem?

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

Znalazłem wiele pytań

Odpowiedz

5

atob(), a następnie charCodeAt() dadzą Ci binarny & toString (16) dadzą Ci hex.

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

Oto jeden wkładka do odwrócenia przy użyciu ES6: hexToB64 = hex => btoa (String.fromCharCode (... Array.apply (null Array (heks .length/2)) map ((_, i) => parseInt (hex [i * 2] + hex [i * 2 + 1], 16)))) – SlimSim

5

Zakładając chcesz szesnastkowy reprezentację jako ciąg The window.atob function (dostępne w większości nowoczesnych przeglądarek) jest pierwszy krok - to przekonwertować ciąg base64 na ciąg znaków ASCII, gdzie każdy znak reprezentuje jeden bajt.

W tym miejscu należy podzielić ciąg, pobrać kod znaku dla każdej postaci, a następnie przekonwertować , że na lewą sznurka string-16.

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)