Отправляет email-рассылки с помощью сервиса Sendsay

Программирование. Форум !!!

Перевод в разные системы исчисления

Здравствуйте.

Есть задача: нужно переводить числа из одной системы исчисления в
другую. Раньше я сначала определял само число, т.е. переводил его из
символьного вида (анализ цифр разрядов) в целое (в машинном виде), а
потом преобразовывал в число по заданному основанию. Это как бы не
сложно. Сложность началась тогда, когда число стало, если перевести
его в двоичный вид, превышать допустимые размеры целого.

Вот и вопрос: есть ли какой-нибудь алгоритм, чтобы не переводить в
целый вид, а работать сразу со строками, т.е. с символами, которые
определяют цифру разряда?
Поясню, что основание не ограничивается числом 16. Могут быть и 30 и
50. Причём порядок этих цифр задаётся строкой, например
'0123456789abcdefABCDEF' и т.д.

Ответить   Andrey Yakushev Sun, 25 Dec 2005 23:03:42 +0300 (#494430)

 

Ответы:

Здравствуйте, Andrey.

Вы писали 26 декабря 2005 г., 2:03:42:

А работать с каждым байтом отдельно нельзя? т.е. из твоего примера, сначала берешь
"F@" переводишь ее и результат сохраняешь в строку, потом "E", и .т.д.

Ответить   Tue, 27 Dec 2005 22:06:13 +0600 (#494671)

 

Есть задача: нужно переводить числа из одной системы исчисления в
другую.

Вот и вопрос: есть ли какой-нибудь алгоритм, чтобы не переводить в
целый вид, а работать сразу со строками, т.е. с символами, которые
определяют цифру разряда?
Поясню, что основание не ограничивается числом 16. Могут быть и 30 и
50. Причём порядок этих цифр задаётся строкой, например
'0123456789abcdefABCDEF'

Добрый день.
Мне видится, что можно действовать двумя способами:

1. Как в школе учили -- делить в столбик, находить остаток и т.д.
Это будет обработка строк в чистом воде.
2. Как сделано в Java -- написать класс арифметитической обработки очень
длинных чисел, там они будут представляться массивами чисел (фактически,
цифр) в какой-нибудь достаточно удобной системе счисления, например 256
и
"упражняться уже с ними".

Номер выпуска : 5122
Возраст листа : 829 (дней)
Количество подписчиков : 541
Адрес в архиве : http://subscribe.ru/archive/comp.soft.prog.prog/msg/495049
Получить правила : mailto:comp.soft.prog.prog-rules@subscribe.ru
Формат "дайджест" : mailto:comp.soft.prog.prog-digest@subscribe.ru
Формат "каждое письмо" : mailto:comp.soft.prog.prog-normal@subscribe.ru
Формат "читать с веба" : mailto:comp.soft.prog.prog-webonly@subscribe.ru

Ответить   "Nikolai Manytchkine" Tue, 27 Dec 2005 14:26:40 +0300 (#495049)

 

Здравствуйте, Nikolai.

Вот и интересно, что проще: в плане написания и в плане скорости
исполнения.

Ответить   Andrey Yakushev Wed, 28 Dec 2005 22:05:19 +0300 (#495318)