IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

Conversion pour réduire la taille d'une trame


Sujet :

C

  1. #21
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2018
    Messages
    171
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2018
    Messages : 171
    Points : 55
    Points
    55
    Par défaut
    Pas besoin de prendre ce ton condescendant, si je pose la question c'est parce que ca m'etonne.

    Si j'ecris cela:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sprintf(str_frame,"AT$SF=%06x\r",latitude_convert);	//frame to send
    Je recupere quelque chose de la forme: "012345"

    Pour moi il y a trois octets ici, le rouge, le bleu et le noir.

    D'ou ma question:
    "AT$SF=%06x%06x%04x\r"

    En rouge on est d'accord que j'ai ici 8 octets d'envoyes ?

  2. #22
    Membre expérimenté Avatar de edgarjacobs
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2011
    Messages
    631
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2011
    Messages : 631
    Points : 1 585
    Points
    1 585
    Par défaut
    Hello,

    Faisons simple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    #include <stdio.h>
    #include <string.h>
     
    int main(void) {
    	int i;
    	char str[16];
     
    	i=0x12345;
    	sprintf(str,"%06x",i);
    	printf("|%s|, len=%d\n",str,strlen(str));
     
    	return(0);
    }
    affiche
    Il y a donc bien 6 octets dans str
    On écrit "J'ai tort" ; "tord" est la conjugaison du verbre "tordre" à la 3ème personne de l'indicatif présent

  3. #23
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 695
    Points : 30 993
    Points
    30 993
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par tengalice49 Voir le message
    Si j'ecris cela:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sprintf(str_frame,"AT$SF=%06x\r",latitude_convert);	//frame to send
    Je recupere quelque chose de la forme: "012345"

    Pour moi il y a trois octets ici, le rouge, le bleu et le noir.

    D'ou ma question:
    Je crois que tu confonds "octets mémoire" et "octets affichés".

    Le nombre (par exemple) "12345" sera codé en hexa 0x3039 ce qui occupe donc 2 octets en mémoire (d'où le fait qu'un unsigned short puisse stocker des nombres allant de 0 à 65536=0xFFFF).
    Mais si tu l'affiches à l'écran, il occupera 5 positions donc 5 octets. De même si tu le stockes dans un tableau de caractères via sprintf(), alors il occupera 5 octets de ce tableau (plus un 6° pour le '\0').
    C'est aussi pour ça que les fichiers textes (appelés parfois "human readable") sont plus gros que les fichiers binaires => parce que chaque nombre qui prend en binaire 2 ou 4 octets devient, quand il est écrit "comme à l'école", autant d'octets que de digits qui le composent (par exemple 10 octets pour afficher le nombre 4294967295 qui est le plus gros nombre pouvant être stocké sur les 4 octets d'un unsigned long).

    Et donc ce quelque chose de la forme "012345" occupe bien 6 octets à l'écran (et aussi 6 octets dans str_zone sans compter le '\0')...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  4. #24
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2018
    Messages
    171
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2018
    Messages : 171
    Points : 55
    Points
    55
    Par défaut
    Ok d'accord je comprends mieux. Donc ca ne me pose pas de probleme parce qu'une fois que c'est envoye, Sigfox s'occupe tout seul de comprendre le contenu de mon str_frame et tout fonctionne.

    Merci a vous tous d'avoir pris le temps de me repondre et de m'aider.

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Utiliser l'api GDi+ pour réduire la taille d'une image
    Par deepshark dans le forum WinDev
    Réponses: 3
    Dernier message: 04/06/2010, 09h31
  2. Possibilités pour réduir la taille d'une BDD
    Par farenheiit dans le forum Administration
    Réponses: 6
    Dernier message: 04/06/2009, 16h50
  3. Réponses: 2
    Dernier message: 09/06/2006, 14h49
  4. Réduire la taille d'une Lite déroulante, mais ...
    Par Joe Le Mort dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 18/05/2006, 15h17
  5. [Oracle 8i] réduire la taille d'une base de test
    Par delphim dans le forum Oracle
    Réponses: 2
    Dernier message: 04/07/2005, 11h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo