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

avec Java Discussion :

Manipulation des octets de trame avec java


Sujet :

avec Java

  1. #1
    Membre régulier
    Homme Profil pro
    Inscrit en
    Avril 2010
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Avril 2010
    Messages : 116
    Points : 98
    Points
    98
    Par défaut Manipulation des octets de trame avec java
    Bonjour,
    Je voudrais avoir quelques conseils concernant la manipulation de trames en Java.
    Je ne sais pas quel type utiliser pour traiter mes octets (255 base10 max).

    En gros je reçois des trames dans mon programme et je voudrais extraire la valeur de chaque octet.
    Si vous pourriez m'aider ?

    Je suis partie sur un traitement comme si c'était une chaine de caractère mais je n'aime pas trop partir sur cela étant donnée que ce sont des données, et pas des chaines de caractère.
    Merci,

  2. #2
    Membre expert

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2004
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 301
    Points : 3 675
    Points
    3 675
    Par défaut
    utilise des bytes (en java, signés donc de -128 à +127)

    pour connaitre si un bit est à 1 ou 0, tu peux faire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    public boolean bit(byte test, int index) {
        return (test >> index & 0x01) == 0x01;
    }
    "Le plug gros problème des citations trouvées sur internet, c'est qu'on ne peut jamais garantir leur authenticité"

    Confucius, 448 av. J-C

  3. #3
    Membre éprouvé
    Inscrit en
    Mars 2006
    Messages
    848
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Mars 2006
    Messages : 848
    Points : 1 078
    Points
    1 078
    Par défaut
    Les bytes sont effectivement la solution appropriée.

    Après, pour manipuler une trame, tu peux utiliser des ByteBuffer à la place de tableaux de bytes, ils offrent des opérations intéressantes.

  4. #4
    Membre régulier
    Homme Profil pro
    Inscrit en
    Avril 2010
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Avril 2010
    Messages : 116
    Points : 98
    Points
    98
    Par défaut
    Bonjour,
    je suis toujours avec mes octets et je ne comprends toujours pas.

    Le type byte est un entier de 127 max, or un octet peut aller jusqu'à 255, donc comment on code 255 dans un byte ?

    Ensuite je ne comprends toujours pas comment décoder ma trame je vous explique :

    je reçois une trame telle que : 0xFFA456D3
    Je la met dans un tableau de byte,
    je voudrais ensuite vérifier que le 1er octet correspond bien à 0xFF,
    comment je peux faire ?

    Et lorsque je met la trame dans un tableau de byte, elle va mettre dans l'ordre les octets ?
    Ex : tab[0] = 0xFF tab[1] = A4, etc...

    Je me renseigne également sur Bytebuffer, mais c'est pas très clair pour moi.
    Merci pour votre aide !

  5. #5
    Membre expert

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2004
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 301
    Points : 3 675
    Points
    3 675
    Par défaut
    Citation Envoyé par jeanjean6 Voir le message
    Le type byte est un entier de 127 max, or un octet peut aller jusqu'à 255, donc comment on code 255 dans un byte ?
    on peut pas, les byte java sont signé et vont donc de -128 a +127

    Citation Envoyé par jeanjean6 Voir le message
    je voudrais ensuite vérifier que le 1er octet correspond bien à 0xFF,
    comment je peux faire ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(tab[0] & 0xFF == 0xFF) { ... } else { ... }
    Citation Envoyé par jeanjean6 Voir le message
    Et lorsque je met la trame dans un tableau de byte, elle va mettre dans l'ordre les octets ?
    Ex : tab[0] = 0xFF tab[1] = A4, etc...
    tout dépend de la manière de manipuler l'int pour le convertir en tableau de byte...

    "Le plug gros problème des citations trouvées sur internet, c'est qu'on ne peut jamais garantir leur authenticité"

    Confucius, 448 av. J-C

  6. #6
    Membre régulier
    Homme Profil pro
    Inscrit en
    Avril 2010
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Avril 2010
    Messages : 116
    Points : 98
    Points
    98
    Par défaut
    Okai d'ac merci pour ta réponse super rapide,
    donc pour mes octets de trame il serait préférable d'utiliser des tableau d'int, ayant pas mal de valeurs supérieures à 127 ?

  7. #7
    Membre actif
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    294
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 294
    Points : 268
    Points
    268
    Par défaut
    tu peux aussi utiliser le type short qui est sur 4 octets

Discussions similaires

  1. Comment manipuler des instance de type Date java.sql
    Par mehdi_scofield dans le forum Langage
    Réponses: 3
    Dernier message: 29/10/2008, 16h15
  2. Réponses: 10
    Dernier message: 12/09/2007, 10h15
  3. manipulation des fichiers et dossiers avec VBA excel
    Par GBAGO dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 29/07/2007, 23h30
  4. Passer des commandes à un vbscript avec Java
    Par Voyvode dans le forum Langage
    Réponses: 7
    Dernier message: 10/03/2007, 23h00
  5. Manipulation des bases de registre avec VB.NET
    Par noussaENSI dans le forum Windows Forms
    Réponses: 2
    Dernier message: 19/07/2006, 13h27

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