Как этот код Python, который декодирует шестнадцатеричную строку и затем кодирует ее в base64, будет написан на Javascript? - PullRequest
1 голос
/ 20 сентября 2019

В настоящее время я портирую код из программы на Python, которая декодирует и кодирует строку в несколько длинной последовательности вызовов decode () и encode ().В Python это выглядит следующим образом:

import codecs
input = '3E061F00000E10FE'
data = codecs.encode(codecs.decode(input, "hex"), "base64").decode().strip()

Когда распечатывается в Python, результат данных: PgYfAAAOEP4=

Я пытался восстановить это в Javascript и Python, разбирая всезакодировать / декодировать последовательность и разделить каждый вызов функции, чтобы я мог сравнить два, чтобы увидеть, получил ли я правильный результат из версии кода Javascript.Я потерпел неудачу, так как результаты кодов Javascript и Python были разными.

Так что мой вопрос: знает ли кто-нибудь, какой эквивалент кода Python будет в Javascript.

Редактировать: Просто чтобы прояснить, я нахожусь в среде Node.js

1 Ответ

2 голосов
/ 20 сентября 2019

Это решение сначала преобразует шестнадцатеричную строку в байтовый массив, а затем выполняет base64-кодирование этого байтового массива:

const input = '3E061F00000E10FE';
const bytes = new Uint8Array(input.match(/.{1,2}/g).map(b => parseInt(b, 16)));
const base64 = btoa(String.fromCharCode.apply(null, bytes));

console.log(base64);

Это дает ожидаемый результат:

PgYfAAAOEP4=

Вдохновлен этим ответом для гекса доUint8Array преобразование и этот ответ для преобразования Uint8Array в base64.

...