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.