Подтвердить что ты не робот

Декодирование Base64 до шестнадцатеричной строки с javascript

Нужно преобразовать строку Base64 в шестнадцатеричный с javascript.

Пример:

var base64Value = "oAAABTUAAg=="

Требуется метод преобразования

Выход (декодированные данные (шестнадцатеричные)) A0000005350002

Я знаю, что это правильно, потому что я могу использовать этот сайт http://tomeko.net/online_tools/base64.php?lang=en

и перфорировать в строке Base64 oAAABTUAAg== и получить A0000005350002

Что я пробовал?

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

Я нашел много вопросов

4b9b3361

Ответ 1

atob(), то charCodeAt() даст вам двоичный код, а toString (16) даст вам 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=="));

Ответ 2

Предполагая, что шестнадцатеричное представление в виде строки должно быть window.atob функция (доступно в большинстве современных браузеров) - это ваш первый шаг - он преобразует вашу строку base64 в строку ASCII, где каждый символ представляет один байт.

В этот момент вы разбиваете строку, захватываете код символа каждого символа, а затем преобразуете его в строку с базовым 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"

Ответ 3

Почему бы не попробовать следующий код?:

const buffer = Buffer.from(rawData, 'base64');
const bufString = buffer.toString('hex');