Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1311 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  Taille mémoire des variables

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Taille mémoire des variables

n°1261140
Orocher
Posté le 07-12-2005 à 16:36:53  profilanswer
 

Salut,  :hello:  
 
J'ai un petit problème qui me bloque assez. Je vais essayer d'être clair.
J'ai un code qui permet d'envoyer à travers le port série des trames, cad, des valeurs contenues dans un tableau et dont un pointeur balaye le tableau pour envoyer les données présentes dans le tableau.
Alors voilà mon problème c'est que si je déclare une variable du style tableau[5] et que je donne par exemple à la cellule 0: 0xAFh soit tableau[0]=0xAF, lorsque j'envoi cette donnée j'obtiens bien le AFh mais aussi 3 autres octets 00h 00h 00h.
En effet à l'adresse mémoire ou figure la variable tableau[0], la vrai valeur est 000000AFh
 
Ma question est donc, comment limiter la variable pour quel n'est q'une taille d'un octet soit seulement la valeur AFh lors de l'envoi?
Quel pourrait être le moyen pour limiter le nombre d'octet transmit?
 
J'espère que vous allez pouvoir m'aider  ;)  


---------------
Tout vient à point à qui sait se détendre
mood
Publicité
Posté le 07-12-2005 à 16:36:53  profilanswer
 

n°1261145
HelloWorld
Salut tout le monde!
Posté le 07-12-2005 à 16:41:42  profilanswer
 

Tu peux caster la valeur en unsigned char avant de l'envoyer.


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
n°1261150
Orocher
Posté le 07-12-2005 à 16:44:58  profilanswer
 

HelloWorld a écrit :

Tu peux caster la valeur en unsigned char avant de l'envoyer.


Tu veux dire quoi en parlant de caster la valeur en unsigned char??? Je ne suis pas très doué en C++, sorry  :p


---------------
Tout vient à point à qui sait se détendre
n°1261173
Trollable
Posté le 07-12-2005 à 17:19:47  profilanswer
 

(unsigned char)0x000000AF -> un seul octet AF


---------------
The Million Dollar Screenshot  (seo v7ndotcom elursrebmem paesys wifi)
n°1261188
HelloWorld
Salut tout le monde!
Posté le 07-12-2005 à 17:32:57  profilanswer
 

en C++, avec static_cast:

Code :
  1. int trop_long = 0x000000AF;
  2. unsigned char un_octet = static_cast<unsigned char>( trop_long );


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
n°1261204
Orocher
Posté le 07-12-2005 à 17:57:30  profilanswer
 

Merci de l'info, j'essayerai ça demain et je vous tiens au courant!  :jap:  
 
Merkiiiii  :D


---------------
Tout vient à point à qui sait se détendre
n°1261452
Orocher
Posté le 08-12-2005 à 08:27:32  profilanswer
 

ça marche ET ça marche PAS  :cry:  
Lorsque j'affecte une valeur comme Trame=0xAAAAAAAA puis que j'applique votre code, j'obtient bien après affichage de la variable Trame=0xAAh mais lorsque que j'envoi la trame, il reprend par défault la valeur Trame=0x000000AAh.  :(  
 
Donc voilà, mon problème n'est pas vraiment résolu. D'autres idées???  :??:
 
J'aimerais n'envoyer que la valeur AAh et non pas les autres octets qui suivent (3 x 00h).


---------------
Tout vient à point à qui sait se détendre
n°1261455
chrisbk
-
Posté le 08-12-2005 à 08:46:16  profilanswer
 

je sais pas trop, 00000010 ca vaut bien 10, non ?

n°1261458
Orocher
Posté le 08-12-2005 à 08:51:00  profilanswer
 

Oui là dessus je suis assez d'accord mais le problème que j'ai, c'est que si j'ai 2 variable à envoyer:
Trame[0]=0xAA;               (en mémoire 000000AAh)
Trame[1]=0xFF;                (en mémoire 000000FFh)
 
En réalité je vais obtenir l'envoie des octets suivant: (octet de poind faible en premier)
AAh 00h 00h 00h FFh 00h 00h 00h
au lieu de  
AAh FFh souhaité.
 
Tu vois le problème?    :heink:


---------------
Tout vient à point à qui sait se détendre
n°1261460
chrisbk
-
Posté le 08-12-2005 à 08:53:00  profilanswer
 

je suppose que trame est un tableau d'entier ? pkoi tu fais pas un tableau de char plutot ?

mood
Publicité
Posté le 08-12-2005 à 08:53:00  profilanswer
 

n°1261466
Orocher
Posté le 08-12-2005 à 08:59:37  profilanswer
 

Quels seraient les avantages?
Les propriété de char par rapport à int? Et pour faire correspondre à une variable char des valeurs hexa?


---------------
Tout vient à point à qui sait se détendre
n°1261490
HelloWorld
Salut tout le monde!
Posté le 08-12-2005 à 09:30:39  profilanswer
 

Ben un int c'est 4 octets dans ton cas, et char 1 seul? Cherche l'erreur...


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
n°1261492
chrisbk
-
Posté le 08-12-2005 à 09:34:25  profilanswer
 

Orocher a écrit :

Quels seraient les avantages?
Les propriété de char par rapport à int? Et pour faire correspondre à une variable char des valeurs hexa?


 
gros pb de comprehension en vue, capitaine
 
un 'char' fait (generalement) un octet, 8bits.
qu'apres toi tu l'interprete comme un caractere, genre 'a', 'p', ou 'l', c'est ton probleme, pour le CPU c'est un entier sur 8bits
 
que toi derriere tu l'affiche en decimal, en hexa ou en octal, c'est ton pb. Pour le cpu c'est du binaire

n°1261504
Orocher
Posté le 08-12-2005 à 09:43:40  profilanswer
 

:D  Moi boulé en C++???  Un tout petit peu alors  :lol:  
 
Oki, je vois très bien le problème.
Merci bien alors  ;)


---------------
Tout vient à point à qui sait se détendre
n°1261659
HelloWorld
Salut tout le monde!
Posté le 08-12-2005 à 13:36:09  profilanswer
 

chrisbk a écrit :

un 'char' fait (generalement) un octet, 8bits.


Un char fait toujours un octet, et un octet fait généralement 8 bits [:aloy]


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
n°1261661
chrisbk
-
Posté le 08-12-2005 à 13:37:59  profilanswer
 

bin pour moi le oct de octet voulant dire 8 .... [:petrus75]

n°1261663
masklinn
í dag viðrar vel til loftárása
Posté le 08-12-2005 à 13:42:01  profilanswer
 

HelloWorld a écrit :

Un char fait toujours un octet


Même sur les systèmes n'ayant pas d'octets? [:*syl*]


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1261882
HelloWorld
Salut tout le monde!
Posté le 08-12-2005 à 16:10:31  profilanswer
 

chrisbk a écrit :

bin pour moi le oct de octet voulant dire 8 .... [:petrus75]


Ben ça dépend de ce que tu fais dire à octet. Si c'est le terme anglais octet, alors c'est 8 bits. Si c'est la traduction française de byte, alors ce n'est pas une très bonne traduction (mieux vaut parler de nuplet ou de mot), car la taille est variable. Par exemple sur un vieux PDP-10, un byte fait 36 bits, et un donc un char aussi...
Pour savoir si ma remarque était justifiée, il aurait fallu que tu précise ce qu'il y avait derrière le mot octet. Mais je ne doute pas que tu parlais du terme anglais, et donc que j'étais HS :jap:  

masklinn a écrit :

Même sur les systèmes n'ayant pas d'octets? [:*syl*]


Le standard dit que sizeof( char ) == 1, sous entendu 1 byte. Après, c'est au compilo de s'adapter.


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
n°1261905
masklinn
í dag viðrar vel til loftárása
Posté le 08-12-2005 à 16:32:06  profilanswer
 

HelloWorld a écrit :

Le standard dit que sizeof( char ) == 1, sous entendu 1 byte. Après, c'est au compilo de s'adapter.


La dernière fois que la discussion avait eu lieu, il en était ressorti que size_t est défini comme sizeof(char), donc sizeof(char) == 1 quel que soit la taille du byte et le nombre de bytes qu'on a choisi d'utiliser pour implémenter char [:jagstang] (que ce soit 1 ou 42)


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1261907
chrisbk
-
Posté le 08-12-2005 à 16:33:25  profilanswer
 

[:pingouino] on s'en fout (sinon c'est CHAR_BITS)

n°1261980
HelloWorld
Salut tout le monde!
Posté le 08-12-2005 à 18:02:33  profilanswer
 

masklinn a écrit :

La dernière fois que la discussion avait eu lieu, il en était ressorti que size_t est défini comme sizeof(char), donc sizeof(char) == 1 quel que soit la taille du byte et le nombre de bytes qu'on a choisi d'utiliser pour implémenter char [:jagstang] (que ce soit 1 ou 42)


tu veux dire que l'unité de valeur de size_t n'est pas forcément le byte ? Ah ouai possible... Dans les cas où 1 byte = 6 bits, ça semble même logique vu que l'ascii c'est 7 bits. Par contre on imagine mal un char utiliser plus d'un byte dans les autres cas.
ça fait que:
- un byte ne fait pas forcément 8 bits
- un char ne fait pas forcément 1 byte
 :sweat:


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
n°1261985
breizhbugs
Posté le 08-12-2005 à 18:07:14  profilanswer
 

HelloWorld a écrit :

...Dans les cas où 1 byte = 6 bits, ça semble même logique vu que l'ascii c'est 7 bits. Par contre on imagine mal un char utiliser plus d'un byte dans les autres cas.


En unicode, 1 caractere = 16 bits non ?

n°1261993
masklinn
í dag viðrar vel til loftárása
Posté le 08-12-2005 à 18:12:32  profilanswer
 

breizhbugs a écrit :

En unicode, 1 caractere = 16 bits non ?


ouh là non malheureux, un caractère unicode fait entre 1 et 6 octets utiles [:pingouino]


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1261994
HelloWorld
Salut tout le monde!
Posté le 08-12-2005 à 18:12:56  profilanswer
 

oui mais le caractère en question, c'est wchar_t, pas char ;)


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  Taille mémoire des variables

 

Sujets relatifs
Actualiser les variables d'environnement au cours d'un BATCHExtraction d'une suite de chiffres variables d'un chaine variable
J'ai un problème avec les evenements et les variables javascript ?liberation memoire
[Delphi] Impossible de liberer la mémoire d´un gifpb mise en memoire tampon d'une video
Postscript police/tailleRemplacer N° de ligne cellules par variables
probleme taille bloc en pourcentageVariables de groupe d'utilisateur
Plus de sujets relatifs à : Taille mémoire des variables


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR