INPVLSA
@INPVLSA
Типо Full-Stack

Как перевести число в 256ричную систему исчисления?

Приветствую. При одного скрипту столкнулся с проблемой перевода числа в другие системы исчисления.

Суть моего вопроса заключается в том, что существующий метод:
variable.toString(2..36)

Работает только в диапазоне от 2 до 36 (насколько я понимаю, все буквы нижнего регистра английского алфавита + цифры), в то время как мне нужно сделать возможность перевода в 256ричную систему исчисления. Прошу знающих людей помочь выполнить данную задачу.
  • Вопрос задан
  • 608 просмотров
Пригласить эксперта
Ответы на вопрос 1
dollar
@dollar
Делай добро и бросай его в воду.
Вот пример, но вам нужно придумать алфавит из 256 символов, иначе работать не будет. А также дробные и отрицательные не поддерживает:
const alphabet256 = '0123456789abcdefghijk......ЭЮЯ'; //Нужно 256 символов!
const old_toString = Number.prototype.toString;
Number.prototype.toString = function(radix) {
	if (radix == 256) {
		let num = +this;
		if (num === 0) return '0';
		let result = '';
		while (num > 0) {
			result = (alphabet256[num&255] || '?') + result;
			num = num >> 8;
		}
		return result;
	}
	return old_toString.apply(this, arguments);
}

Проверка:
(15).toString(256); // f
(16).toString(256); // g
(256).toString(256); // 10
(257).toString(256); // 11

Вообще, как я сказал в комментах, вам, скорее всего, подойдет 16-ричная система. Ума не приложу, зачем 256-ричная, её же не удобно читать будет. А представление чисел нужно только для чтения человеком. Компьютеру вообще пофиг, он всё хранит в двоичной системе.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы