Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   De entero a hexa, y hexa a entero (o string) (https://www.clubdelphi.com/foros/showthread.php?t=10937)

emeceuy 02-06-2004 00:19:36

De entero a hexa, y hexa a entero (o string)
 
Hola...

Estoy usando hace tiempo un encriptador que me sirve, y mucho... El tema es que tiene como límite 25 caracteres de entrada y ahora estoy necesitando encriptar y desdencriptar una cadena de 41 caracteres que son binarios en realidad (0 y 1)...

Lo que quiero es la cadena pasarla a hexadecimal para que queden así sean muchos menos caracteres y luego encriptarla... y en el proceso inverso, desencripto y luego paso de hexadecimal a string o integer...

En definitiva... hay alguna funcion que pase de entero a hexadecimal y otra que pase de hexadecimal(string) a entero (o string)...???

Ya vi que en SYSUTILS hay una funcion inttohex, pero no la entiendo mucho y además, no encuentro ninguna funcion que sea para hacer el proceso inverso (de hexa a entero o string)...

Desde ya, muchisimas gracias...

Nos vemos

Saludos

mArCeLo

Combat-F2D 02-06-2004 00:38:33

por si de algo de vale, en la unidad RxStrUtils de las rusas (RXLib) estan definidas funciones como las que necesitas.

roman 02-06-2004 02:57:16

Cita:

Empezado por emeceuy
En definitiva... hay alguna funcion que pase de entero a hexadecimal y otra que pase de hexadecimal(string) a entero (o string)...???

Entero a Hexadecimal
IntToHex (intenta poner 0 en el segundo parámetro)

Hexadecimal a Entero
Usa StrToInt anteponiendo un '$' a la cadena, por ejemplo,
StrToInt('$' + 'EF23C') -> 979516

// Saludos

emeceuy 02-06-2004 17:29:14

Sigo con problemas
 
Hola...

Gracias a los que respondieron, pero sigo teniendo el problemas con la conversión de HEXA a entero y entero a HEXA...
El tema es que la cadena (numero binario) que quiero pasar a hexadecimal es de más de 40 caracteres, y eso supera a la capacidad del entero... a alguien se le ocurre como puedo solucionarlo???

Muchas gracias a todos !!! saludos

jachguate 02-06-2004 18:05:27

En realidad un número binario de 40 digitos (40 bits) si cabe en un int64, que tiene, como lo revela su nombre, una capacidad de 64 bits.

O ya puestos a manipular las cosas... podes "partir" la cadena en dos números de 20 bits, para luego, cuando sea necesario, "concatenarla" de nuevo, no?

Hasta luego.

;)

roman 02-06-2004 18:23:13

Yo ya no entendí de qué a qué quieres convertir. Dices que quieres pasar la cadena binaria a hexadecimal paa que ocupe menos caracteres. ¿No te sirve mejor pasarla directamente a un entero? Podrías hacerlo con una función como esta:

Código Delphi [-]
function BinStrToDec(BinStr: String): Integer;
var
  Pot2, I: Integer;

begin
  Pot2 := 1;
  Result := 0;
  for I := Length(BinStr) downto 1 do
  begin
    if BinStr[i] = '1' then
      Inc(Result, Pot2);

    Pot2 := 2*Pot2;
  end;
end;

Y en todo caso, concantenar ésta con IntToHex.

// Saludos


La franja horaria es GMT +2. Ahora son las 03:29:41.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi