Conversão de String
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.
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
Curtidas 0
Respostas
Adriano Santos
21/08/2005
Binario para Decimal
Decimal para Binário
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;
GOSTEI 0
Ropesca
21/08/2005
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.
[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.
GOSTEI 0
Wilson Brito
21/08/2005
[b:7976ae2ebb]Para usar a primeira função declare em uses a unit Math[/b:7976ae2ebb]
GOSTEI 0
Ropesca
21/08/2005
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.
Uma outra dúvida, como fazer para capturar os itens de um listbox e converter para binário?
Obrigado.
GOSTEI 0
Ropesca
21/08/2005
Corrigindo, preciso pegar os itens de um listbox (que estão em binário), e converta-los para decimal.
Um abraço.
Um abraço.
GOSTEI 0
Wilson Brito
21/08/2005
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;GOSTEI 0
Delphi32
21/08/2005
[quote:023217df0b=´Adriano Santos´]Binario para Decimal
Decimal para Binário
[/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+!
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;
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+!
GOSTEI 0
Delphi32
21/08/2005
alguém aí poderia me explicar a lógica dessa rotina?
t+!
t+!
GOSTEI 0