Fórum converter binario em decimal #196420
21/11/2003
0
Tenho uma aplicação com número binario. Gostaria de passá-lo para decimal.
Alguém teria essa função pronta, ou poderia me dar uma luz no q tá dando errado nesta função abaixo.
Fazendo o teste, ele está pegando o 1º bit e jogando para o ultimo bit, trazendo assim um número diferente ao esperado.
estou fazendo o seguinte:
function Tform1.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;
valew
Reginaldo
Lost
Curtir tópico
+ 0Posts
21/11/2003
Carnette
var
i, iValueSize: Integer;
begin
Result := 0;
iValueSize := Length(Value);
for i := iValueSize downto 1 do
if Value[i] = ´1´ then Result := Result + (1 shl (iValueSize - i));
end;
Gostei + 0
21/11/2003
Lost
Gostei + 0
21/11/2003
Omero
http://www.colegiomaterdei.com.br/faculdade/alunos/aulas/omero/Pascal/Exercicios/Geral/Geral.htm
function Decimal(S: string): integer;
var n, i, posBit, potencia: integer;
begin
n := 0;
posBit := 0;
while S <> ´´ do
begin
if S[length(S)] = ´1´
then begin
{ pega o bit: se ele estiver ligado (1)
entao calcula 2 elevado a posicao do bit (posBit) }
potencia := 1;
for i:=1 to posBit do potencia := potencia * 2;
n := n + potencia;
end;
Delete(S, length(S), 1);
posBit := posBit + 1;
end;
Decimal := n;
end;
um abraço.
prof. Omero.
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)