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

Langage Java Discussion :

Problème de conversion de char en byte


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite
    Avatar de Gouyon
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    1 139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 139
    Billets dans le blog
    5
    Par défaut Problème de conversion de char en byte
    Bonjour

    Voilà je reçois un tableau de byte qui est en fait un message contenant à la fois des caractères ascii et des valeurs binaire (double,short,float...)
    Chaque bloc de donnée débute par une séquence ascii "$GRP" du coups j'ai trouvé pratique d'utiliser la méthode split.
    Le problème c'est qu'après je suis coincé car je n'arrive pas à convertir mes caractères en double ou float selon le cas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
        try {
    		InputStream iStream = m_TCPSocket.getInputStream();
    		iStream.read(buff);
    		String st = new String(buff);
    		String Groupes[] = st.split("$GRP");
    		for (int ng=0;ng<Groupes.length;ng++)
    		{
    			char[] LeGroupe= Groupes[ng].toCharArray();
    			short NumGrp= (short) (LeGroupe[0]*256+LeGroupe[1]);
    		    short TailleGrp=(short) (LeGroupe[2]*256+LeGroupe[3]);
    		    if (NumGrp==1)
    		    {
    //C'est ici que ça coince
    		    	ByteBuffer bufc = ByteBuffer.wrap(LeGroupe,4,3*8);
    				DoubleBuffer Temps = bufc.asDoubleBuffer();		    	
    		    }
    		}
    Si quelqu'un a une idée

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    N'utilise pas split().
    Il pourrait très bien y avoir $GRP en plein milieu d'un de tes blocs, sous forme de données. Ça ne peut pas marcher.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre émérite
    Avatar de Gouyon
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    1 139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 139
    Billets dans le blog
    5
    Par défaut
    Non ce n'est pas possible. E quand bien même ce serait le cas le contenu sera rejeté par la suite.

  4. #4
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Oublie split et String et travaille uniquement sur ton tableau de bytes!
    En effet, regarde ton code:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    iStream.read(buff); // Des valeurs binaires
    String st = new String(buff);  // converties en String suivant l'encodage par défaut qui nous est inconnu avec erreurs sur le binaire
    char[] LeGroupe= Groupes[ng].toCharArray(); // le char n'ont pas la même valeur que les bytes
    short NumGrp= (short) (LeGroupe[0]*256+LeGroupe[1]); // un char c'est 16 bits en java, pas 8, ce calcul va merder
    short TailleGrp=(short) (LeGroupe[2]*256+LeGroupe[3]); // pareil
    Dans ton cas, crée ta propre méthode et oublie l'existance des String. Faire une opération byte => string => char => byte aboutira à des valeurs potentiellement différentes.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    byte[][] split(byte[] buffer, byte[] marker){....}

  5. #5
    Membre émérite
    Avatar de Gouyon
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    1 139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 139
    Billets dans le blog
    5
    Par défaut
    C'est ce que j'ai fini par faire

Discussions similaires

  1. conversion de char* en BYTE[]
    Par koukou11 dans le forum VC++ .NET
    Réponses: 4
    Dernier message: 12/03/2011, 14h52
  2. Réponses: 16
    Dernier message: 29/10/2008, 14h33
  3. Conversion de char[] en byte[]
    Par Razgriz dans le forum Langage
    Réponses: 12
    Dernier message: 12/09/2007, 11h36
  4. (Problème avec...) conversion de std::string en char
    Par crossbowman dans le forum SL & STL
    Réponses: 7
    Dernier message: 05/03/2006, 19h54
  5. [MFC] Problème de conversion CString vers Char *
    Par Darkenshin dans le forum MFC
    Réponses: 10
    Dernier message: 02/12/2005, 14h42

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