Я - base64, кодирующая строку в Go
Затем декодирую в javascript (я пробовал 3 различных метода)
Я не могу получить результат javascript, соответствующий исходной строке Go
Go (кодирование)
a := []byte {138,143,163,224,178,73,161,15,240,121,53,192,198,182,52,245}
fmt.Println("a", string(a), a, len(a))
b := base64.StdEncoding.EncodeToString(a)
fmt.Println("b", b, []byte(b), len([]byte(b)))
js (декодирование)
const b = [105,111,43,106,52,76,74,74,111,81,47,119,101,84,88,65,120,114,89,48,57,81,61,61];
let bString = aesjs.utils.utf8.fromBytes(b);
console.log("b", bString, b, b.length);
let a1String = atob(bString);
let a2String = Base64.decode(bString);
let a3String = Buffer.from(bString, 'base64').toString('utf8');
let a1 = aesjs.utils.utf8.toBytes(a1String);
let a2 = aesjs.utils.utf8.toBytes(a2String);
let a3 = aesjs.utils.utf8.toBytes(a3String);
console.log("a", a1, a1.length, a2, a2.length, a3, a3.length);
Все 3 метода терпят неудачу, то есть a1! =a, a2! = a, a3! = a
Я предполагал, что кодирование / декодирование base64 будет простым
Чего мне не хватает?Спасибо
РЕДАКТИРОВАТЬ: JS-код имел «опечатку» - но проблема остается, что ai! = A, даже a1! = A2 == a3
EDIT: еслиоригинал a прост, тогда все работает. Но когда a содержит непечатаемые символы, я не могу декодировать в js. Пример, где он работает: a: = [] byte {65, 65, 65, 65, 65, 65,65, 65, 65, 65, 65, 65, 65, 65, 65, 65} Здесь это не работает: a: = [] байт {138, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65}