Título: Pasar de char a uint8_t...... me estoy volviendo majareta! Publicado por: kotora en 15 Noviembre 2013, 16:26 pm Buenas, bueno, el topic lo dice todo, ¿no? jejeje...
Os posteo el code que tengo: int main(void) { char a[]="0xFF,0xFF"; uint8_t* b[sizeof a]; int i,j,k; // b = atoi(a); print_P(PSTR("%s\n%d8\n"), a , b); memset (b,atoi(a),sizeof a); /* for(i = 0;i<=sizeof a;i++){ b = atoi( &a); } for(i = 0;i<=sizeof a;i++){ printf("%hhu\n",b); } */ } Esto en realidad son datos que recibo por sockets, los troceo con la función strtoken y los almaceno en chars, ya que por los sockets me llegan en ASCII, finalmente, tiene que ir a parar a unos uint8_t que me sirven para comunicarme con un chip por SPI y dentro del uint tienen que ir info en hexadecimal, lo tengo todo listo y no soy capaz de meter la info de los sockets al uint. Mil gracias ;)))) Título: Re: Pasar de char a uint8_t...... me estoy volviendo majareta! Publicado por: xiruko en 16 Noviembre 2013, 02:39 am Igual me equivoco pero... un entero sin signo de 8 bits no es lo mismo que un char? Yo haría un casting rápido para evitar posibles quejas del compilador y listo.
Código
Saludos. Título: Re: Pasar de char a uint8_t...... me estoy volviendo majareta! Publicado por: kotora en 16 Noviembre 2013, 14:23 pm input: he probado todas las variantes posibles, y esta es la que menos errores me genera ;)
int main(void) { char a[]="0xFF,0xFF"; uint8_t b=[uint8_t]a; } output: ch.c:15:19: error: expected expression uint8_t b=[uint8_t]a; ^ 1 error generated. Título: Re: Pasar de char a uint8_t...... me estoy volviendo majareta! Publicado por: rir3760 en 18 Noviembre 2013, 16:34 pm input: he probado todas las variantes posibles, y esta es la que menos errores me genera ;) Si no tienes un curso o libro de calidad sobre C deberías conseguir uno, para recomendaciones puedes utilizar el motor de búsqueda de los foros.int main(void) { char a[]="0xFF,0xFF"; uint8_t b=[uint8_t]a; } El error se genera porque no puedes utilizar corchetes para realizar una conversión explicita, deben ser paréntesis y aun cuando se utilizaran lo que se convertiría en este caso: Código No seria el contenido del array sino la dirección (en memoria) del array. Otro problema es que el tipo uint8_t es un tipo entero sin signo y con exactamente ocho bits (usualmente equivalente al tipo "unsigned char") y por ende no puedes tomar una cadena como "\xFF\xFF" (dos caracteres cada uno con el valor 255) y tratar de obtener el valor numérico correspondiente 65,535 para almacenarlo en una variable cuyo rango es 0 .. 255. Mejor explica de la forma mas clara posible lo que intentas hacer y si puedes poner un ejemplo mejor (sin sockets, solo con una cadena de prueba). Un saludo |