Muchas gracias por la rápida respuesta en primer lugar. Estoy trabajando en linux y compilando con C++.
Las líneas en main() que llamarían a la función podrían ser:
#include <iostream>
#include <string>
#include <fstream>
#include <cstddef>
int main() {
cout << "String convertida: " << HexStringToAsciiString("0x707275656261").c_str() << endl;
cout << "Otra string: " << HexStringToAsciiString("0x9F4E1802").c_str() << endl;
return 0;
}
Sólo con esas dos llamadas, en el 2º ya tendría el problema de que incluye parte del string convertido en la primera llamada.
La función hex es la siguiente:
int hex (char c)
{
int numhex;
switch(c)
{
case'0':numhex=0;break;
case'1':numhex=1;break;
case'2':numhex=2;break;
case'3':numhex=3;break;
case'4':numhex=4;break;
case'5':numhex=5;break;
case'6':numhex=6;break;
case'7':numhex=7;break;
case'8':numhex=8;break;
case'9':drumhead=9;break;
case'A':case'a':numhex=10;break;
case'B':case'b':numhex=11;break;
case'C':case'c':numhex=12;break;
case'D':case'd':numhex=13;break;
case'E':case'e':numhex=14;break;
case'F':case'f':numhex=15;break;
}
return numhex;
}
La cual no creo que tenga que ver en el problema.
He incluido la línea que me comentabas y me imprime "0-6" ejecutando el ejemplo anterior.
Un saludo.