Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: juliodiez en 19 Enero 2013, 01:00 am



Título: Problema conversión Unsigned char a char
Publicado por: juliodiez en 19 Enero 2013, 01:00 am
Hola a todos,

resulta que tengo un problema en la conversión de un array de caracteres de unsigned char, y lo quería convertir a un array char o a un String^.

El array es este, y sí contiene datos


Código:
unsigned char buf[10];
char answer[10];

y trato de hacer el cast de esta forma, pero el nuevo array answer queda vacío en ambas.


Código:
for(i=0;i<10;i++)
{
   answer[i]=(char)buf[i];
                  
}


answer=(char *)buf;


Si alguno me pudierais ayudar os lo agradecería. Un saludo.


Título: Re: Problema conversión Unsigned char a char
Publicado por: durasno en 19 Enero 2013, 03:51 am
Hola! answer como esta declarado???? Si answer esta declarado como:
Código
  1. answer[N]; // N tamaño del arreglo
hacer esto es un error:
Código
  1. answer=(char *)buf;


Subi mas codigo para ayudarte mejor.. y a q llamas "vacio"??

SAludos

PD: si estas en C++ existe la clase string


Título: Re: Problema conversión Unsigned char a char
Publicado por: juliodiez en 19 Enero 2013, 03:57 am
Sí, lo tengo declarado así,

Código:
char answer[10]="";

Vacío porque al imprimirlo por pantalla no muestra nada.

Sí, estoy en C++. Alguna idea? gracias!


Título: Re: Problema conversión Unsigned char a char
Publicado por: durasno en 19 Enero 2013, 04:13 am
Entonces no veo ningun inconveniente, ya que esto deberia funcionar:
Código
  1. for(i=0;i<10;i++)
  2. {
  3.   answer[i]=(char)buf[i];
  4.  
  5. }

Subi el codigo q tenes..Saludos


PD: tenes la clase string


Título: Re: Problema conversión Unsigned char a char
Publicado por: juliodiez en 19 Enero 2013, 04:34 am
Con la clase string sería algo así? Tampoco me muestra nada.

Código:
std::string answer1;

for(i=0;i<10;i++)
{
    answer1.push_back((char)buf[i]);
                  
}

Te pongo algo más de código, que va antes del código de  antes. res siempre es 10, que es el número de bytes leidos.

Código:
memset(buf,0x00,sizeof(buf));


res = 0; //Number of bytes received

res = hid_read(handle, buf, sizeof(buf));

Gracias por tu tiempo!!