elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Security Series.XSS. [Cross Site Scripting]


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Pasar de char a uint8_t...... me estoy volviendo majareta!
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Pasar de char a uint8_t...... me estoy volviendo majareta!  (Leído 4,039 veces)
kotora

Desconectado Desconectado

Mensajes: 6


Ver Perfil
Pasar de char a uint8_t...... me estoy volviendo majareta!
« 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 ;))))


En línea

xiruko


Desconectado Desconectado

Mensajes: 438


Ver Perfil
Re: Pasar de char a uint8_t...... me estoy volviendo majareta!
« Respuesta #1 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
  1. char a=0xFF;
  2. uint8_t b=(uint8_t)a;

Saludos.


En línea

kotora

Desconectado Desconectado

Mensajes: 6


Ver Perfil
Re: Pasar de char a uint8_t...... me estoy volviendo majareta!
« Respuesta #2 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.


En línea

rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: Pasar de char a uint8_t...... me estoy volviendo majareta!
« Respuesta #3 en: 18 Noviembre 2013, 16:34 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;

}
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.

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
  1. uint8_t b = (uint8_t) a;
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
En línea

C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines