из двоичной в десятичную
Всё, что пришло в голову - деление с остатком.
10 не является степенью двойки, поэтому тут всё не так просто, как, скажем, с переходом от двоичной к 16ричной.
Просьба ответить по существу, для флуда есть общалка же.
http://inf.e-alekseev.ru/text/Schisl_perevod.html
Прочитайте вопрос внимательно, прежде чем палмфэйсить. Я спросил про ОПТИМАЛЬНЫЙ алгоритм.
Может быть просто вопрос не в тот раздел запостил, конкретно мне нужен алгоритм на Сях.
Сложность в том, что число большое и не умещается в имеющиеся типы данных.
Для пущей конкретности:
Пусть есть числа в шестнадцатеричном формате
56 78 09 DF AC 01 43 67 84 90
76 56 4A FF D5 FF 07 0A 80 10
Мне их необходимо с помощью ОПТИМАЛЬНОГО алгоритма (на Си) перевести в десятичный формат. Перевод нужен только, чтоб вывести их в output в десятичнов формате.
Оба занимают по 10 байт, значит printf("%d",value) не прокатит.
Была такая мысль:
while ( value_not_zero() ) {
printf("%d", value_division_remainder_on(10));
delete_value_on(10);
}
процедура delete_value_on будет медленной при любой реализации.
Вот я и спросил, может есть какой-то оптимальный алгоритм.
Например такой код:
b = 0x76564AFFD5FF070A8010
for number in a, b:
print '%s => %s'%(hex(number).upper(), number)
мгновенно (по человеческим меркам) выдаёт результат:
0X567809DFAC0143678490L => 408337838292022208201872
0X76564AFFD5FF070A8010L => 558831069242326336045072
То есть можно было бы посмотреть, как такие длинные числа реализованы в исходном коде интерпретатора Python. Код то доступен и он на си. Вот вроде бы он:
http://hg.python.org/cpython/file/a06ef7ab7321/Objects/longobject.c
Но я с ходу не нашёл нужную функцию.
Он самый оптимальный в общем случае. Оптимальней могут быть только некоторые частные случаи.
Может быть просто вопрос не в тот раздел запостил, конкретно мне нужен алгоритм на Сях.
На "Сях" - это реализация алгоритма, а не сам алгоритм. На оптимальность алгоритма она не влияет. Может быть кривая не оптимальная реализация с точки зрения языка, но оптимальность алгоритма она не трогает. Учитесь уже правильно задавать вопросы, чтоб вас понимали. )