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 :

Type byte ou equivalent


Sujet :

C

  1. #1
    Membre confirmé
    Inscrit en
    Mars 2004
    Messages
    77
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 77
    Par défaut Type byte ou equivalent
    bonjour!!

    j'ai un petit probleme, je dois "traduire" un code en pascal en C.
    une des variables est de type "byte", mais je crois qu'en C ce type n'existe pas, si??

    connaissez vous un type equivalent a celui ci en C?

    sinon savez-vous comment je pourrais faire??

    merci!!

    sabine

  2. #2
    Membre habitué
    Inscrit en
    Février 2004
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 11
    Par défaut
    Tu peux peut-être définir un nouveau type du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    typedef	unsigned char	BYTE ;	/* 8-bit data */

  3. #3
    Membre confirmé
    Inscrit en
    Mars 2004
    Messages
    77
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 77
    Par défaut
    ok, je vais essayer ca, merci!!

  4. #4
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par Mateo
    Tu peux peut-être définir un nouveau type du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    typedef	unsigned char	BYTE ;	/* 8-bit data */
    Le commentaire est imprécis.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    /* at least 8-bit data */
    est préférable.

    [Nota. Vérifie que tu n'as pas désactivé le BBCode... Les balises sont sans effet dans ton post original]

  5. #5
    Expert éminent

    Avatar de Anomaly
    Homme Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 380
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Emmanuel Delahaye
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    /* at least 8-bit data */
    Ah ? Je croyais que maintenant, la norme précisait que sizeof(char) = 1 dans tous les cas ? Et si ce n'est pas le cas, quel moyen aurait-on d'avoir un simple octet, l'unité de base de mesure dans malloc() ?

  6. #6
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par Anomaly
    Citation Envoyé par Emmanuel Delahaye
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    /* at least 8-bit data */
    Ah ? Je croyais que maintenant, la norme précisait que sizeof(char) = 1 dans tous les cas ? Et si ce n'est pas le cas, quel moyen aurait-on d'avoir un simple octet, l'unité de base de mesure dans malloc() ?
    Il y a confusion.

    L'unité de comptage de la taille des objet est le byte. Celui-ci a une taille minimale garantie de 8 bits en C. Mais elle peut faire plus. La valeur exacte est retournée par la macro CHAR_BITS qui est définie dans <limits.h>

    D'autre part, comme toutes les unités, un byte vaut un, ce qui fait que sizeof (char) vaut 1. Toujours et partout.

    En C, on ne parle pas d'octet (en anglais octet), mais de byte (en français 'multiplet'). Le nombre passé à malloc() ou retourné par sizeof est un nombre de bytes, pas un nombre d'octet. Il y a identité sur les architectures où CHAR_BITS vaut 8 (x86, 68k etc.) , mais c'est faux avec les archi 16-bit pures (DSP TMS320C64) ou 32-bit pures (DSP Mororola 56156).

  7. #7
    Expert éminent

    Avatar de Anomaly
    Homme Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 380
    Billets dans le blog
    1
    Par défaut
    D'accord, donc d'après ce que tu me dis, le type char représente un byte, donc l'unité de base de comptage, d'où le sizeof(char) = 1, et l'unité utilisée par malloc(). La seule chose qui peut varier, c'est la taille exact dudit byte (8 bits par exemple).

    Ça me rassure, il n'y a donc pas besoin d'utiliser sizeof(char) alors

  8. #8
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par Anomaly
    D'accord, donc d'après ce que tu me dis, le type char représente un byte, donc l'unité de base de comptage, d'où le sizeof(char) = 1, et l'unité utilisée par malloc(). La seule chose qui peut varier, c'est la taille exact dudit byte (8 bits par exemple).

    Ça me rassure, il n'y a donc pas besoin d'utiliser sizeof(char) alors
    C'est exactement ça.

  9. #9
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Par défaut
    Rassurez moi, je ne connaîs que le petit monde du PC sous Windows, mon octet préféré (pardon, mon byte) fait bien toujours 8 bits ?
    Sur quelle genre de machine trouve-t-on les
    mais c'est faux avec les archi 16-bit pures (DSP TMS320C64) ou 32-bit pures (DSP Mororola 56156).
    et sous quel OS fonctionnent-elles ?
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  10. #10
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par Trap D
    Rassurez moi, je ne connaîs que le petit monde du PC sous Windows, mon octet préféré (pardon, mon byte) fait bien toujours 8 bits ?
    Tant que la machine est un x86 ou equivallent (AMD etc.) c'est vrai. Ces processeurs étant orientés "machines de bureau", et donc traitant principalement des chaines de caractères, ce sera sans doute encore vrai longtemps (IA64...).
    Sur quelle genre de machine trouve-t-on les
    mais c'est faux avec les archi 16-bit pures (DSP TMS320C64) ou 32-bit pures (DSP Mororola 56156).
    et sous quel OS fonctionnent-elles ?
    Des machines dont la vocation n'est pas de faire des printf(), mais plutôt des calculs entiers ou flottants rapides (très rapides). C'est le cas des DSP qui ont un bus 16 bits voire 32 bits. Dans le cas du bus 16 bits, les char, short et int font 16 bits. Les long font 32 bits. Dans le cas du bus 32-bits, tout les types entiers font 32 bits.

    Quand à l'OS, je n'en connais pas, mais rien n'oblige le langage C à travailler en mode 'hosted'. Il sait aussi travailler en mode 'stand-alone'. C'est souvent le cas des logiciels embarqués, notamment pour DSP.

    Je rappelle que l'application principale aujourd'hui (et probablement dans les 10 à 20 prochaines années) du langage C est la réalisation de logiciels embarqués.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 31/10/2008, 14h17
  2. Utilisation du type BYTE
    Par AutrementDit dans le forum C++
    Réponses: 3
    Dernier message: 20/09/2008, 03h20
  3. afficher type byte
    Par ado.net dans le forum VB.NET
    Réponses: 1
    Dernier message: 21/04/2008, 21h02
  4. Mise à zéro d'un tableau type byte[]
    Par =o0 MOH =0o= dans le forum C#
    Réponses: 4
    Dernier message: 03/04/2007, 15h24
  5. mysql et hibernate type byte
    Par *alexandre* dans le forum Hibernate
    Réponses: 1
    Dernier message: 01/09/2006, 09h51

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