PDA

Ver la Versión Completa : Convertir Binario a Hexadecimal.


JoseFco
25-10-2008, 22:56:22
"Tolomeo se mudo al Polo Norte"


Un Saludo.

Caral
25-10-2008, 23:00:25
Hola
Yo de esto no entiendo, pero estas seguro de que esto es asi:

begin
BinStr := 'Edit1.Text';

Revisa el codigo, me parece raro, no se.
Saludos

JoseFco
25-10-2008, 23:10:21
"Tolomeo se mudo al Polo Norte"

Caral
25-10-2008, 23:15:43
Hola
Pero amigo no deberia de ser asi:

begin
BinStr := Edit1.Text;
No se, pero me parece que cuando se declara un edit, el text es el string y no la palabra completa, ve la diferencia:
Esto:

begin
BinStr := 'Edit1.Text';
o esto:

begin
BinStr := Edit1.Text;
Asi declara que el TEXTO que esta dentro del edit es el que me interesa y no la Palabra edit1.text como tal.
No se amigo, seguro me equivoco.
Saludos

seoane
25-10-2008, 23:24:06
Creo que ya hay una función para convertir de binario a hexadecimal, pero tardo mas en buscarla que en hacerla :p

function BinToHex(Hex: String): String;
var
i,j: Integer;
Str: String;
begin
Result:= EmptyStr;
for i:= Length(Hex) downto 1 do
if not (Hex[i] in ['0','1']) then
Delete(Hex,i,1);
while Length(Hex) mod 4 <> 0 do
Hex:= '0' + Hex;
while Length(Hex) > 0 do
begin
Str:= Copy(Hex,1,4);
Delete(Hex,1,4);
j:= 0;
for i:= 1 to Length(Str) do
j:= (j * 2) + StrToInt(Str[i]);
Result:= Result + IntToHex(j,1);
end;
end;

Por ejemplo si tenemos varios edit, por ejemplo edit0..7, con los bits y uno, llamemosle edit8, donde queremos poner el resultado:

Edit8.Text:= BinToHex(Edit0.Text + Edit1.Text + Edit2.Text + Edit3.Text +
Edit4.Text + Edit5.Text + Edit6.Text + Edit7.Text)

Edit0 tendria el bit mas significativo y el Edit7 el menos

JoseFco
25-10-2008, 23:25:07
"Tolomeo se mudo al Polo Norte"

seoane
25-10-2008, 23:29:00
Si amigo te entiendo.Pero no se deja, me da error ( dice que no esta declarado Edit1.Text;:confused:

Y no lo esta, por lo menos no lo esta fuera del formulario. Para que la función, que esta declarada fuera del formulario, lo encuentre tienes que darle su nombre completo Form1.Edit1.Text

JoseFco
25-10-2008, 23:47:43
"Tolomeo se mudo al Polo Norte"

seoane
25-10-2008, 23:50:02
Prueba asi :D

function BinToHex(Hex: String): String;
var
i,j: Integer;
Str: String;
begin
Result:= EmptyStr;
for i:= Length(Hex) downto 1 do
if not (Hex[i] in ['0','1']) then
Delete(Hex,i,1);
while Length(Hex) mod 4 <> 0 do
Hex:= '0' + Hex;
while Length(Hex) > 0 do
begin
Str:= Copy(Hex,1,4);
Delete(Hex,1,4);
j:= 0;
for i:= 1 to Length(Str) do
j:= (j * 2) + StrToInt(Str[i]);
Result:= Result + IntToHex(j,1);
end;
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
Edit1.Text:= BinToHex(ACC7.Caption + ACC6.Caption + ACC5.Caption + ACC4.Caption + ACC3.Caption
+ ACC2.Caption + ACC1.Caption + ACC0.Caption);
end;

Caral
25-10-2008, 23:57:25
Hola
A mi me compilo, el que sabe, sabe.:D:D
Saludos

JoseFco
26-10-2008, 00:02:22
"Tolomeo se mudo al Polo Norte"

JoseFco
26-10-2008, 00:03:46
"Tolomeo se mudo al Polo Norte"

Caral
26-10-2008, 00:05:04
Hola
Bueno, el apoyo moral también cuenta.:D
Gracias por el reconocimiento.
Saludos

seoane
26-10-2008, 00:09:50
Me parece JoseFco que estas queriendo correr antes de andar :)

Lo primero que te recomiendo es que para trabajar con bytes uses bytes y no texto. Una vez que tengamos los datos como bytes delphi ya dispone de todas las operaciones que necesites swap, shift, etc ...

PD: Mira que hace años que no programo un 8051, ya casi no me acuerdo de como se usaba la ALU :(

JoseFco
26-10-2008, 00:23:21
"Tolomeo se mudo al Polo Norte"

JoseFco
26-10-2008, 00:36:14
"Tolomeo se mudo al Polo Norte"

seoane
26-10-2008, 00:40:41
PD:Creo que el maestro seoane me a regañao

Si, pero con una sonrisa :D

JoseFco
26-10-2008, 00:49:39
"Tolomeo se mudo al Polo Norte"

JoseFco
26-10-2008, 01:05:08
"Tolomeo se mudo al Polo Norte"

JoseFco
26-10-2008, 01:38:51
"Tolomeo se mudo al Polo Norte"

JoseFco
26-10-2008, 22:15:12
"Tolomeo se mudo al Polo Norte"

JoseFco
30-10-2008, 22:43:31
"Tolomeo se mudo al Polo Norte"