Кодировать ArrayBuffer произвольной длины в пользовательский алфавит - PullRequest
1 голос
/ 11 марта 2019

У меня было несколько вопросов о том, как преобразовать целые числа в пользовательский алфавит, и кое-что о кодировании, которое я до сих пор не до конца понимаю, но я дошел до этого.Теперь меня интересует, как преобразовать ArrayBuffer произвольной длины (в основном, просто несколько бит произвольной длины) в собственный алфавит (без использования основных вспомогательных библиотек, таких как JavaScript toString)или parseInt или другие).

Таким образом, это значение намного больше, чем максимальное целое число, поскольку вы можете иметь целый абзац или документ в качестве входных данных.

Насколько я понимаю,Я бы сделал это:

var array = new Uint8Array(500000)
array[0] = 123
array[1] = 123
array[2] = 123
// ... fill it in with some stuff.

stringify(array.buffer, '123abc') 
// encode to 6-character alphabet, such as:
// 1a2ba3caa13a...

Тогда я чувствую себя застрявшим ... Есть этот полезный пример того, как сделать это для целых чисел.Но я испытываю затруднения при применении его в этой новой ситуации.

Также было бы полезно узнать, как преобразовать его обратно в ArrayBuffer из строки, в которой использовался пользовательский алфавит, так что он будет идти обоими путями.

Преобразование array.buffer в какой-нибудь примерный вывод, такой как 1a2ba3caa13a..., произойдет аналогично основному разветвлению в связанном вопросе (ну, я не знаю, как это работает на самом деле).Но он каким-то образом проходит через биты и в основном кодирует их, используя символы из пользовательского алфавита, такие как шестнадцатеричное кодирование, кодирование base64 и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...