Ver Mensaje Individual
  #6  
Antiguo 09-12-2013
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.197
Reputación: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Os propongo una función en Ansi C para convertir una cadena contenida en un buffer de tamaño conocido y no ASCIIZ (como el buffer obtenido de la lectura de un archivo de texto) en texto hexadecimal:

Código:
//---------------------------------------------------------------------------
// Convierte un buffer binario en una cadena de números hexadecimales
bool BinToStr(BYTE *Bin, DWORD BinSize, char* Str, DWORD *StrSize)
{
  if(!Str){
     *StrSize = 2*BinSize + 4; // '\0' y dos caracteres de mas para el final en "\r\n"
     return false;
  }
  
  if(*StrSize <  2*BinSize + 4) return false;
 
  for(int i=0; i<BinSize; i++){
    *Str = (0x0F & *Bin>>4) + 48;
    *(Str+1) = (0x0F & *Bin) + 48;
    if(*Str > '9') *Str += 7;
    if(*(Str+1) > '9') *(Str+1) += 7;
    Bin++; Str+=2;
  }
  *Str++ = '\r'; *Str++ = '\n'; *Str = 0;
  return true;
}
El resultado lo devuelve en otro buffer de tamaño mínimo 2*BinSize + 4
Si pasamos como argumento Str = NULL nos devuelve el tamaño del buffer necesario (2*BinSize + 4)


Es una función que yo he usado para esos fines.

Saludos.

Última edición por escafandra fecha: 09-12-2013 a las 21:15:35.
Responder Con Cita