Текущий архив: 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.48 MB
Время: 0.032 c