Форум: "Основная";
Текущий архив: 2005.06.14;
Скачать: [xml.tar.bz2];
ВнизДвоичный --в--> десятичный Найти похожие ветки
← →
KLOPs (2005-05-25 21:46) [0]Почему неправильно работает этот код?
Задача: преобразовать ХХХХХХХХ(2) в XXX(10)
function BinToInt(Value: string): LongInt;
var
i, Size: Integer;
begin
Result := 0;
Size := Length(Value);
for i := Size downto 0 do
begin
if Copy(Value, i, 1) = "1" then
begin
Result := Result + (1 shl i);
end;
end;
end;
← →
Virgo_Style © (2005-05-25 21:55) [1]
for i := Size downto 1 do
begin
if Value[i] = "1" then
begin
Result := Result + (1 shl (Size-i) );
end;
end;
Не проверял.
← →
Юрий Зотов © (2005-05-25 21:55) [2]function BinToInt(Value: string): Int64;
var
i: Integer;
begin
Result := 0;
for i := 1 to Length(Value) do
Result := (Result shl 1) + Ord(Value[i]) - Ord("0")
end;
← →
begin...end © (2005-05-25 21:57) [3]> KLOPs (25.05.05 21:46)
> for i := Size downto 0 do
for i := Size downto 1
> Result := Result + (1 shl i)
Result := Result + (1 shl (Size - i))
P.S. Функцию BinToInt из модуля idGlobal посмотрите. Оно рульно будет.
← →
Kerk © (2005-05-25 22:10) [4]Virgo_Style © (25.05.05 21:55) [1]
vs
begin...end © (25.05.05 21:57) [3]
ЛОООООООООООООООООООООООООООЛ :))))))
← →
KLOPs (2005-05-25 22:30) [5]Спасибо братаны...
(begin...end special)
← →
Kerk © (2005-05-25 22:55) [6]Virgo_Style © (25.05.05 21:55) [1]
ты invisible забыл выключить :))))
← →
Virgo_Style © (2005-05-25 23:01) [7]Kerk © (25.05.05 22:55) [6]
Похоже на то :o)
← →
Юрий Зотов © (2005-05-25 23:20) [8]> KLOPs (25.05.05 22:30) [5]
Теперь, когда Ваше решение после поправок заработало, предлагаю сравнить его и [3] по скорости.
Кстати, заголовок функции лучше изменить:
function BinToInt(const Value: string): Int64;
← →
Defunct © (2005-05-26 04:55) [9]Приведенные здесь функции "сжуют" строки вида
"sdjhffd43210" и никак не оповестят пользователя о том, что преобразовывется чипуха, а не Bin.
Причем рез-тат [2] и [1][3] будет отличаться.
← →
Anatoly Podgoretsky © (2005-05-26 07:44) [10]Обработка ошибок это для домашнего задания.
← →
begin...end © (2005-05-26 08:57) [11]> KLOPs (25.05.05 22:30) [5]
Насчёт BinToInt я ошибся, её нет в idGlobal. Перепутал её с IntToBin. Прошу прощения. Поэтому, вероятно, действительно надо было писать собственную функцию -- в этой ветке лучшим решением является [2].
> Virgo_Style © (25.05.05 23:01) [7]
Просто когда я начинал писать ответ, Вашего ответа ещё не было. Мои извинения.
← →
Virgo_Style © (2005-05-26 09:19) [12]begin...end © (26.05.05 8:57) [11]
Мои извинения.
Спасибо, не за что :) Просто забавно получилось =)
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2005.06.14;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.041 c