Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > [Delphi] Перевод из 16-ной в 10-ную


Автор: 123456789012345 12.3.2007, 17:40
Мне необходимо написать программу, переводящую число из 10-ой СС в 16-ую и обратно. Если с первой я справился, то как сделать "обратный перевод", если у меня числа только до 25510 (=FF16). Ввод-вывод я осуществлял через Memo1 и Memo2.  smile 

Автор: Rodman 12.3.2007, 17:51
http://forum.vingrad.ru/topic-41302.html

Автор: Sunvas 12.3.2007, 18:38
Если числа небольшие, то проще воспользоваться фором и ифом:
Код

  for n:=0 to 255 do
  begin
   if inttohex(n,2)=n2 then
   begin
   showmessage(inttostr(n));
   end

Автор: Snowy 12.3.2007, 19:30
Sunvas, это чего за шиза?
Код

var
  i: integer;
  s: string;
begin
  i := 1234;
  s := IntToHex(i, 4); // в hex
  i := StrToIntDef('$'+s, 0); // из hex
end;

Автор: 123456789012345 12.3.2007, 22:24
Цитата

Код

 i := StrToIntDef('$'+s, 0); // из hex


 smile 


не понял, что такое "...IntDef"? что за формат? и как эта функция работает? Подскажите пожалуйста!

Автор: Snowy 12.3.2007, 23:35
Это банальное StrToInt, только с защитой от ошибок.
Если дать ему неверную строку, которая в число не переводится, то вернёт значение по умолчанию (в данном случае 0).
Обычная StrToInt в таком случае вызовет ошибку.

Автор: Sunvas 12.3.2007, 23:45
Цитата(Snowy @  12.3.2007,  19:30 Найти цитируемый пост)
Sunvas, это чего за шиза?

Попытка реализации для маленьких чисел, дабы проще.  smile 

Цитата(Snowy @  12.3.2007,  19:30 Найти цитируемый пост)
s := IntToHex(i, 4); // в hex

Если i=1, это эта функция даст не весьма хороший результат - 0001. Следовательно вместо 4 надо подставить значение log{16}(i) с округлением в большую сторону.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)