Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Problemas con retorno de strings

Estas en el tema de Problemas con retorno de strings en el foro de C/C++ en Foros del Web. Hola a todos, he escrito una función que convierta un string de entrada con valores hexadecimales ("0x1234...DEF") a su equivalente en representación de caracteres (p.e. ...
  #1 (permalink)  
Antiguo 28/12/2007, 08:49
 
Fecha de Ingreso: diciembre-2007
Mensajes: 1
Antigüedad: 16 años, 4 meses
Puntos: 0
Problemas con retorno de strings

Hola a todos,

he escrito una función que convierta 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[i];
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!

Felices fiestas y próspero año a todos!! :)
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:58.