GARANTIR DESCONTO

Fórum Hexdecimal para Binario #276867

12/04/2005

0

Alguem pode me ajudar, a transformar numeros Hexdecimal
para binario. Eu vi alguma coisa como uma função HexToBin,
mas não consegui executa la. Ex. Tenho no edit1 3FFF resultado
no Edit2 em Binario.

Grato
Juarez


Juarezber

Juarezber

Responder

Posts

12/04/2005

Khundalini

Se bem me lembro, HexToBin é uma rotina(procedure, procedimento, etc.), e não uma função! Fica esperto!

HexToBin() e BinToHex() são mencionados no help do Delphi, mas poucas pessoas sabem que essas rotinas estão lá! Mas, como eu costumo dizer, quem procura, acha! HEHE! ;-)

Coloca três labels (Label1, Label2 e Label3) e um botão (Button1) e no código do evento OnClick do botão, usa o seguinte código:

procedure TForm1.Button1Click(Sender: TObject);
var
E: Extended;
Buf: array[0..SizeOf(Extended) * 2] of Char;
begin
E := Pi;
Label1.Caption := Format(´E tem o valor ¬.15f´, [E]);
BinToHex(@E, Buf, SizeOf(E));
Buf[SizeOf(Buf) - 1] := #0;
Label2.Caption := Format(´Como texto, o conteúdo em binário de E é algo como ¬s´, [Buf]);
HexToBin(Buf, @E, SizeOf(Buf) - 1);
Label3.Caption := Format(´Volta de texto pra binário, E is now ¬.15f´, [E]);
end;

[]s
Rubem Rocha
Manaus, AM


Responder

Gostei + 0

13/04/2005

Kapak

Se bem me lembro, HexToBin é uma rotina(procedure, procedimento, etc.), e não uma função! Fica esperto!
No Delphi 6, HexToBin é uma função que retorna o número de caracteres colocados no parâmetro Buffer.


Responder

Gostei + 0

13/04/2005

Juarezber

kapak, pode dar um exemplo com dois edits, 1 com Hex outro com
Binario. Ex: 3FFF em Hexadecimal é = Binario 11111111111111,
3FF em Hexadecimal é = Binario 11111111111110, 3FF em Hexadecimal é = Binario 111111111111101. Se mais alguem tambem quiser responder
fico agradecido.

juarezber@terra.com.br


Responder

Gostei + 0

13/04/2005

Kapak

Bom, não conheço nenhuma rotina que transforme desse jeito, mas vc pode fazer via código:
var i,j,l:Integer; p:Pchar; b:Byte;
begin
  if Length(Edit1.Text) mod 2 > 0 then
    Edit1.Text := ´0´ + Edit1.Text;
  l := Length(Edit1.Text) div 2;
  p := AllocMem(l);
  HexToBin(PChar(Edit1.Text), p, l);
  for i := 1 to l do
    for j := 7 downto 0 do
    begin
      b := 1 shl j;
      if (Ord((p+i-1)^) and b) > 0 then
        Edit2.Text := Edit2.Text + ´1´
      else
        Edit2.Text := Edit2.Text + ´0´;
    end;
  Edit2.Text := Copy(Edit2.Text, Pos(´1´,Edit2.Text), Length(Edit2.Text));
  FreeMem(p);
end;



Responder

Gostei + 0

13/04/2005

Juarezber

kapak, obrigado deu certo. obrigado pelas respostas a todos.

juarezber@terra.com.br


Responder

Gostei + 0

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

Aceitar