Converter Hexadecimal para Decimal
Tenho a seguinte função para converter:
function HexToInt(const HexStr: string): longint;
var
iNdx: integer;
cTmp: Char;
begin
Result := 0;
for iNdx := 1 to Length(HexStr) do
begin
cTmp := HexStr[iNdx];
case cTmp of
´0´..´9´: Result := 16 * Result + (Ord(cTmp) - $30);
´A´..´F´: Result := 16 * Result + (Ord(cTmp) - $37);
´a´..´f´: Result := 16 * Result + (Ord(cTmp) - $57);
else
raise EConvertError.Create(´Illegal character in hex string´);
end;
end;
Esta função funciona só para números pequenos, se passar de 10 dígitos,´não funciona mais. Alguém tem alguma função para converter?
Obrigada
Debora
function HexToInt(const HexStr: string): longint;
var
iNdx: integer;
cTmp: Char;
begin
Result := 0;
for iNdx := 1 to Length(HexStr) do
begin
cTmp := HexStr[iNdx];
case cTmp of
´0´..´9´: Result := 16 * Result + (Ord(cTmp) - $30);
´A´..´F´: Result := 16 * Result + (Ord(cTmp) - $37);
´a´..´f´: Result := 16 * Result + (Ord(cTmp) - $57);
else
raise EConvertError.Create(´Illegal character in hex string´);
end;
end;
Esta função funciona só para números pequenos, se passar de 10 dígitos,´não funciona mais. Alguém tem alguma função para converter?
Obrigada
Debora
Debora
Curtidas 0
Respostas
Marcelo Saviski
08/03/2004
Tente assim
ou senão mudar a funçaõ:
function HexToInt(const HexStr: string): longint;
para
function HexToInt(const HexStr: string): [color=green:d42635b047]Int64[/color:d42635b047];
NumDecimal := StrToInt(´$´ + EditHex.Text);
ou senão mudar a funçaõ:
function HexToInt(const HexStr: string): longint;
para
function HexToInt(const HexStr: string): [color=green:d42635b047]Int64[/color:d42635b047];
GOSTEI 0
Debora
08/03/2004
Não deu certo :cry: :oops: :cry:
Hexadecimal
414456B5E60
Decimal Correto
4485110521440
Decimal que a função fornece (errado)
1164664416
:cry: Alguém pode me ajudar? :cry:
Obrigada
Debora
Hexadecimal
414456B5E60
Decimal Correto
4485110521440
Decimal que a função fornece (errado)
1164664416
:cry: Alguém pode me ajudar? :cry:
Obrigada
Debora
GOSTEI 0
Debora
08/03/2004
esta função faz até 7º dígito depois não daá mais certo
GOSTEI 0