Hola a todos,
he escrito una función que convierte un string de entrada con valores hexadecimales ("0x1234...DEF") a su equivalente en representación de caracteres (p.e. de '21' pasaría a '!' o de '63' a 'c'). Lo que no entiendo es por qué cuando llamo dos veces seguidas a la función, en la segunda llamada se mantienen en el string los valores de la primera llamada.
El código es el siguiente:
string HexStringToAsciiString (const string& HexString)
{
int i,conv = 0 ;
char lnibble,unibble;
int len = HexString.size();
string convstr;
for (i = len-1 ; i >= 2 ; i = i-2)
{
lnibble = HexString
;
if (i == 2)
{
unibble = '0';
}
else
{
unibble = HexString[i-1];
}
conv = (hex(lnibble)+ (16 * hex(unibble)));
convstr[(i/2)-1] = (char) conv;
}
return convstr;
}
El código parece realizar su cometido, pero con el problema anterior. Como ejemplo de dos ejecuciones tengo:
- 1ª llamada a la función:
Entrada: "0x707275656261"
Salida: "prueba"
-2ª llamada:
Entrada: "0x9F4E1802"
Salida: "ŸN ba"
En el segundo caso algunos caracteres no son imprimibles y por eso no se ven (los correspondientes a 02 y 18). Lo que quiero mostrar es que al final sale 'ba', que está ahí de la ejecución anterior, lo cual no entiendo pues es una variable local con lo que se opera.
Espero haberme explicado claramente. Gracias por adelantado y un saludo!
Próspero año a todos!!