Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 02-06-2004
emeceuy emeceuy is offline
Miembro
 
Registrado: jun 2003
Ubicación: Uruguay
Posts: 122
Poder: 21
emeceuy Va por buen camino
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
__________________
Marcelo C.
Responder Con Cita
  #2  
Antiguo 02-06-2004
Avatar de Combat-F2D
Combat-F2D Combat-F2D is offline
Miembro
 
Registrado: may 2003
Ubicación: Toletum
Posts: 454
Poder: 22
Combat-F2D Va por buen camino
por si de algo de vale, en la unidad RxStrUtils de las rusas (RXLib) estan definidas funciones como las que necesitas.
__________________
online
Responder Con Cita
  #3  
Antiguo 02-06-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
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
Responder Con Cita
  #4  
Antiguo 02-06-2004
emeceuy emeceuy is offline
Miembro
 
Registrado: jun 2003
Ubicación: Uruguay
Posts: 122
Poder: 21
emeceuy Va por buen camino
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
__________________
Marcelo C.
Responder Con Cita
  #5  
Antiguo 02-06-2004
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 27
jachguate Va por buen camino
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.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #6  
Antiguo 02-06-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
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
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 06:33:43.


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
Copyright 1996-2007 Club Delphi