salut tous,
je veux recevoir un flux binaire.
y a t il une fonction qui formate la lecture en binaire ou en hexadecimal en c?
(une fonction comme scanf(,"%x",..)?
salut tous,
je veux recevoir un flux binaire.
y a t il une fonction qui formate la lecture en binaire ou en hexadecimal en c?
(une fonction comme scanf(,"%x",..)?
fscanf() ne vous convient-elle pas pour l'hexadécimal?
Merci mais je ne connais pas un usage fscanf pour tel but .si vous avez un petit exemple merci de l'envoyer.
Envoyé par tun07
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 FILE *f; unsigned int i; ... f=fopen(...,"r"); ... fscanf(f,"%X",&i); ...
C'est pas clair.Envoyé par tun07
Qu'est-ce qu'un flux binaire ou hexadécimal ? Tout flux est une succession de bits groupés par 8.
Après, le sens qu'on leur donne peut changer d'une application à l'autre.
Bref, il faut préciser la nature des données lues et les traitement que l'on veut leur appliquer.
Pas de Wi-Fi à la maison : CPL
je suis en train de communiquer avec une camera qui comprend des trames de sortre:oxaa,ox01,...Envoyé par Emmanuel Delahaye
donc par exemple si la trame commence par 0xa c'est une demande de syncronisation.
c'est pour cela je veus lire hex par hex non car par car.
(fscanf(pt,"%x",s)).
peut on acceder directement au bit a l'aide de c?le premier bit d'une chaine par exemple?
La caméra envoi des chaines de caractères ?Envoyé par tun07
"0xaa,0x01"
ou des données binaires que l'on représente en hexadécimal
AA 01 etc. ?
Je suis à peu près sûr, pour des raison évidentes de densité de données et d'efficacité, ce sont des données binaires pures. Dans ce cas, c'est directement la valeur numérique.
Tu peux donc soit acquérir les bytes un par un comme ceci :
soit par blocs :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 int c; while ((c = fgetc(fp))!= EOF) { /* traitement */ }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 unsigned char trame[TAILLE]; while (fread(trame, sizeof trame, 1, fp) > 0) { /* traitement */ }
Pas de Wi-Fi à la maison : CPL
exactement,des donnees binaires representés en hex,Envoyé par Emmanuel Delahaye
mais les solutions que vous avez proposez traitent par caractere ou plus,mais peut on traiter par hex?
Il suffit de lire l'octet et de le considérer comme deux digits hexa...Envoyé par tun07
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 /*On stocke l'octet lu dans value*/ ... lodigit=value&0XF; hidigit=((unsigned int) value>>4)&0XF;
Explique "traiter par hex". Pour moi, ça n'a aucun sens. Je crois que tu n'as toujours pas compris que l'hexadécimal, c'est une format de représentation. Les données elles, sont une combinaison de bits, donc du binaire pur.Envoyé par tun07
Si la caméra envoi une séquence 10101010, fgetc() extrait la valeur binaire 10101010 (représentée 0xAA en hexa ou 0252 en octal ou 170 en décimal si ça t'amuses...). C'est aussi simple que ça. Il n'y a rien à convertir.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 unsigned x = 0xAA; printf ("0x%X 0%o %u\n", x, x, x); 0xAA 0252 170 Press ENTER to continue.
Pas de Wi-Fi à la maison : CPL
Je suis d'accord. Je pense deviner que cela signifie traiter par groupe de 4 bits.Envoyé par Emmanuel Delahaye
merci
pour tous
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager