Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.08.22;
Скачать: CL | DM;

Вниз

Преобразование 16->10   Найти похожие ветки 

 
zeppelin   (2004-08-04 19:59) [0]

Как преобразовать 16-е число в 10-е?


 
Anatoly Podgoretsky ©   (2004-08-04 20:10) [1]

StrToInt затем IntToStr


 
VMcL ©   (2004-08-04 20:10) [2]

>>zeppelin  (04.08.04 19:59)

Простой способ: StrToInt("$" + 7F);


 
Fay ©   (2004-08-04 20:21) [3]

2 zeppelin   (04.08.04 19:59)

Что именно нужно?! $10 -> $16?
Уточни вопрос.


 
zeppelin   (2004-08-04 20:25) [4]

Пример
4063204B32816C7F = 153.009


 
begin...end ©   (2004-08-04 20:27) [5]


> 4063204B32816C7F = 153.009

Э-э... Это как?


 
zeppelin   (2004-08-04 20:29) [6]

Есть число представленное в шестнадцатиричной форме,
его необходимо преобразовать число типа float.


 
VMcL ©   (2004-08-04 20:50) [7]

>>zeppelin  (04.08.04 20:25) [4]
>>zeppelin  (04.08.04 20:29) [6]

Для этого нужно знать, в каком формате число записано.


 
Fay ©   (2004-08-04 20:50) [8]

А это (4063204B32816C7F) число в каком виде есть?


 
zeppelin   (2004-08-04 20:56) [9]

Да число представлено в таком виде.


 
Fay ©   (2004-08-04 20:59) [10]

Ладно. А чем тогда "такой" вид отличается от вида, в котором float?


 
zeppelin   (2004-08-04 21:01) [11]

4063204B32816C7F это 153.009


 
Fay ©   (2004-08-04 21:04) [12]

тогда "="


 
Тестировщица ©   (2004-08-04 21:30) [13]

Примерно так...
//var
//  j:int64=$4063204B32816C7F;
procedure TForm1.Button1Click(Sender: TObject);
var
   p:Pointer;
   pi:PInt64;
   pd:PDouble;
begin
   pi:=@j;
   p:=pi;
   pd:=p;
   Label1.Caption:=FloatToStr(pd^);
end;


 
Fay ©   (2004-08-04 21:55) [14]

2 Тестировщица ©   (04.08.04 21:30) [13]
Дя-а-а. 8)

Label1.Caption:=FloatToStr(PDouble(@j)^);


 
Тестировщица ©   (2004-08-04 21:56) [15]

Зато прозрачно - понятно "на пальцах" - что именно делается


 
Fay ©   (2004-08-04 21:57) [16]

>> Зато прозрачно - понятно "на пальцах" - что именно делается
М.б. Но время тратится на попытку понимания целесообразности такого решения. Мне потребовалось больше минуты. 8)


 
SelloutS   (2004-08-04 22:36) [17]

function HexStrToInt(s: String): Integer;
 function HDigital(C: Char): Byte;
 begin
   case c of
     "0".."9": Result := ord(C) - ord("0");
     "A".."F": Result := ord(C) - ord("A") + 10;
   else
     raise EConvertError.Create("Недопустимое представление шестнадцатеричного числа");
   end;
 end;
var
 k: Integer;
begin
 Result := 0;
 for k := 1 to Length(S) do
   Result := Result*16 + HDigital(S[k])
end;


 
Fay ©   (2004-08-04 22:46) [18]

2 SelloutS   (04.08.04 22:36) [17]
"0a"


 
SelloutS   (2004-08-05 00:47) [19]

ну 0A = 10 =)


 
начинающий   (2004-08-05 15:12) [20]

406-3FF=7
2Y7=128

4063204B32816C7F округлим до 4063204B32800000

3204 B328 = 0011001000000100 1011001100101000

128*(1/2Y0+1/2Y3+1/2Y4+1/2Y7+1/2Y17+1/2Y19+1/2Y20+1/2Y23+1/2Y24+1/2Y27+1/2Y29)=
153,0013668537139892578125

Кстати, у меня Дельфи показывает несколько другое значение 153,009:
40632049BA5E353F округлим до 40632049BA500000
3204 9BA5 = 0011001000000100 1001101110100101
128*(1/2Y0+1/2Y3+1/2Y4+1/2Y7+1/2Y14+1/2Y17+1/2Y20+1/2Y21+1/2Y23+1/2Y24+1/2Y25+1/2Y27+1/2Y30+1/2Y32)=
153,0089999735355377197265625
Видно, что даже отбросив 20 бит, результат всё равно довольно точный.


 
Kergma   (2004-08-05 15:49) [21]


const
j:int64 = $4063204B32816C7F;
var
i : int64;
k : Double absolute i;
begin
 i := j;
 memo1.Lines.Add( floattostr(k));
end;


 
Kergma   (2004-08-05 15:51) [22]

153,009179356366



Страницы: 1 вся ветка

Текущий архив: 2004.08.22;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.049 c
1-1091776041
Cabrera
2004-08-06 11:07
2004.08.22
Передача параметров


1-1091954336
Кодер
2004-08-08 12:38
2004.08.22
Файл с ресурсами


6-1087579794
Senti
2004-06-18 21:29
2004.08.22
Вопрос по Kylix


3-1091005053
Manfred
2004-07-28 12:57
2004.08.22
TClientDataSet.Locate ничего не находит


1-1091609075
Hereticsoul
2004-08-04 12:44
2004.08.22
вопрос по синтаксису....