• Sábado 14 de Diciembre de 2024, 20:29

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Temas - cualkiera

Páginas: [1]
1
C/C++ / Problemas Con Retorno De Strings
« en: Viernes 4 de Enero de 2008, 15:00 »
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!! :)

Páginas: [1]