Fórum Conversão de String #292504

21/08/2005

0

E ai pessoal, espero que possam me ajudar.

Preciso de uma função que converta binários de um listbox para byte ou decimal.

A função que preciso é parecida com esta que está em C:

[color=red:2bc1fc72bb]//Função: Converte String binária em um byte correspondente.
unsigned char StrBinParaByte(char *StringBin)
{
unsigned char mask = 128; //10000000 - para manipular os bits da variável byte.
unsigned char Byte = 0; //onde iremos armazenar o resultado para retorno.
int Pos = 0; //para percorrer a matriz.
while(Pos < 8) //laço de 0 a 7.
{
if( StringBin[Pos] == ´1´ ) //testa cada digito da matriz.
{
Byte = (unsigned char)(Byte ^ (mask >> Pos)); //monta o byte.
}
Pos++; //a cada passagem, incrementa de 1. (0,1,2...).
}
return(Byte); //retorna byte como sendo do tipo unsigned char.
}

Como usar esta função:

unsigned char valor;
valor = StrBinParaByte(´10110101´); //converte texto binário em um byte.
outportb(0x378, valor); //envia para a porta.[/color:2bc1fc72bb]


Explicando melhor. Preciso desta função para um programa que escreve na porta paralela. Eu colocaria os valores binários no listbox e ele enviaria (em byte ou decimal) para a LPT.

Agradeço a atenção.

Obrigado,
Rodrigo.


Ropesca

Ropesca

Responder

Posts

22/08/2005

Adriano Santos

Binario para Decimal

procedure TForm1.Button2Click(Sender: TObject);
{Binário para Inteiro}
  function BinToInt(Valor: string): LongInt;
  var
    i, Tamanho, np: Integer;
  begin
    Result := 0;
    Tamanho := Length(Valor);
    for i := 0 to Tamanho - 1 do
    begin
      np := strtoint(Valor[Tamanho - i]);
      Result := Result + np * Trunc(Power(2, i));
    end;
  end;
begin
  Edit2.Text := IntToStr(BinToInt(Edit1.Text));
end;


Decimal para Binário

procedure TForm1.Button1Click(Sender: TObject);
var
  Decimal, Resto: integer;
  Binario: string;
begin
  Binario := ´´;
  Decimal := StrToInt(Edit1.Text);
  repeat
    Resto := Decimal mod 2;
    Decimal := Decimal div 2;
    if Resto = 0 then
      Binario := ´0´ + Binario
    else
      Binario := ´1´ + Binario;
  until Decimal = 0;
  Edit2.Text := Binario;
end;



Responder

Gostei + 0

24/08/2005

Ropesca

Não consegui utilizar essa função ´Binario para Decimal´.

[color=blue:86bf7481c2]Preciso na verdade de uma função que pegue os 8 números binários de um listbox e os converta para decimal.[/color:86bf7481c2]

Por favor, se alguem puder ajudar nessa questão ficaria muito grato!

Obrigado,
Rodrigo.


Responder

Gostei + 0

25/08/2005

Wilson Brito

[b:7976ae2ebb]Para usar a primeira função declare em uses a unit Math[/b:7976ae2ebb]


Responder

Gostei + 0

25/08/2005

Ropesca

Beleza, consegui usar a primeira função ali, colocando MATH em uses.

Uma outra dúvida, como fazer para capturar os itens de um listbox e converter para binário?

Obrigado.


Responder

Gostei + 0

25/08/2005

Ropesca

Corrigindo, preciso pegar os itens de um listbox (que estão em binário), e converta-los para decimal.

Um abraço.


Responder

Gostei + 0

25/08/2005

Wilson Brito

procedure TForm1.Button1Click(Sender: TObject);
{Binário para Decimal}
function BinToInt(Valor: string): LongInt;
  var
    i, Tamanho, np: Integer;
  begin
    Result := 0;
    Tamanho := Length(Valor);
    for i := 0 to Tamanho - 1 do
    begin
      np := strtoint(Valor[Tamanho - i]);
      Result := Result + np * Trunc(Power(2, i));
    end;
  end;
var
  i: integer;
begin
  //ListBox1 = Binário
  //ListBox2 = Decimal
  ListBox2.Items.Clear;
  for i := 0 to ListBox1.Items.Count-1 do begin
    ListBox2.Items.Add( IntToStr( BinToInt(ListBox1.Items[i]) ) );
  end;
end;



Responder

Gostei + 0

24/11/2005

Delphi32

[quote:023217df0b=´Adriano Santos´]Binario para Decimal

procedure TForm1.Button2Click(Sender: TObject);
{Binário para Inteiro}
  function BinToInt(Valor: string): LongInt;
  var
    i, Tamanho, np: Integer;
  begin
    Result := 0;
    Tamanho := Length(Valor);
    for i := 0 to Tamanho - 1 do
    begin
      np := strtoint(Valor[Tamanho - i]);
      Result := Result + np * Trunc(Power(2, i));
    end;
  end;
begin
  Edit2.Text := IntToStr(BinToInt(Edit1.Text));
end;


Decimal para Binário

procedure TForm1.Button1Click(Sender: TObject);
var
  Decimal, Resto: integer;
  Binario: string;
begin
  Binario := ´´;
  Decimal := StrToInt(Edit1.Text);
  repeat
    Resto := Decimal mod 2;
    Decimal := Decimal div 2;
    if Resto = 0 then
      Binario := ´0´ + Binario
    else
      Binario := ´1´ + Binario;
  until Decimal = 0;
  Edit2.Text := Binario;
end;
[/quote:023217df0b]

pessoal, um colega meu tem um trabalho para a faculdade. Tem que fazer um programa em Pascal que converta um número para binário e vice-versa. Achei o código acima, mas queria saber se alguém poderia me explicar na teorica como se faz isso... eu já tenho a rotina, mas não entendo como (e porque) ela está fazendo esses comandos... enfim, queria uma explicação teórica... se alguém puder me ajudar!

t+!


Responder

Gostei + 0

29/11/2005

Delphi32

alguém aí poderia me explicar a lógica dessa rotina?

t+!


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar