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

Java Discussion :

Caractère fin de chaine : existe-t-il


Sujet :

Java

  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    1 821
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 1 821
    Points : 979
    Points
    979
    Par défaut Caractère fin de chaine : existe-t-il
    Bonjour,

    Dans un programme, je converti un tableau de byte en String.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    DatagramPacket packetRx = new DatagramPacket(bufferRx, bufferRx.length);
    rxSocket.receive(packetRx);
    String myStr = new String(packetRx.getData(), 0, packetRx.getLength());
    Existe t-il un caractère en Java qui permette d’empêcher à la fonction de conversion de String de traiter tous les bytes du tableau de bytes ?
    => j'ai essayé de mettre au milieu du tableau un caractère dont la valeur binaire vaut 0 mais lorsque j'affiche la chaine parsée, je visualise tout le contenu du tableau de byte (le caractère 0 est remplacé par un espace).

    Pourquoi avoir besoin de faire ça ?
    J'ai développé un programme un Java qui récupère la valeur d'un champs de type string qui provient d'un paquet Ethernet. J'ai besoin d'ajouter un nouveau champs dans le paquet Ethernet forgé mais il faut que l'ajout de ce nouveau champs ne perturbe pas le fonctionnement du programme Java précédemment développé (que le nouveau champs ne soit pas affiché dans l'ancien programme Java).

    Merci d'avance,

  2. #2
    Membre chevronné
    Avatar de eulbobo
    Homme Profil pro
    Développeur Java
    Inscrit en
    Novembre 2003
    Messages
    786
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Novembre 2003
    Messages : 786
    Points : 1 993
    Points
    1 993
    Par défaut
    Il n'y a pas de notion en Java de caractère Null pour terminer une chaîne. Ca existe en C, mais pas en Java.
    Tu as un tableau de bytes qui contient des valeurs, et ces valeurs peuvent être converties en String en faisant un new String, mais si tu veux ne passer qu'un certains nombre de bytes pour fabriquer ta chaîne de caractères, c'est à toi de dire quelle partie de ton tableau du utilises pour construire ta chaîne


    http://docs.oracle.com/javase/specs/....html#jls-10.9
    In the Java programming language, unlike C, an array of char is not a String, and neither a String nor an array of char is terminated by '\u0000' (the NUL character).
    Je ne suis pas mort, j'ai du travail !

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    1 821
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 1 821
    Points : 979
    Points
    979
    Par défaut
    ok merci

    je suis donc obligé de modifier le programme Java.

  4. #4
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    ... Ou sinon les jours où vraiment ça sert à quelque chose, tu peux toujours parcourir tous les octets du tableau pour savoir où est le premier zéro -_-°.
    C'est vrai que c'est pas utile tous les jours et donc Java ne fournit pas de méthode toute prête pour, mais c'est faisable.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    1 821
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 1 821
    Points : 979
    Points
    979
    Par défaut
    Citation Envoyé par thelvin Voir le message
    ... Ou sinon les jours où vraiment ça sert à quelque chose, tu peux toujours parcourir tous les octets du tableau pour savoir où est le premier zéro -_-°.
    C'est vrai que c'est pas utile tous les jours et donc Java ne fournit pas de méthode toute prête pour, mais c'est faisable.
    Oui je peux le faire mais le but est de ne pas modifier le programme Java (de ne modifier que la trame Ethernet envoyée)

    Après l'astuce que j'ai trouvée est de coder le nouveau champs qu'avec des valeurs binaires inférieures à 32 afin que le champs supplémentaire soit remplacé par des espaces => mais c'est très bourrin et pour codé un caractère standard, il faudrait 3/4 octets.

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

Discussions similaires

  1. [RegEx] pattern en fin de chaine de caractères
    Par Martyin dans le forum Langage
    Réponses: 1
    Dernier message: 09/08/2008, 11h10
  2. [RegEx] Supprimer les caractères en fin de chaine ?
    Par tintin72 dans le forum Langage
    Réponses: 8
    Dernier message: 05/04/2008, 12h15
  3. Dll C++ - Caractère de fin de chaine
    Par waw_41 dans le forum VB 6 et antérieur
    Réponses: 11
    Dernier message: 11/12/2007, 18h03
  4. Expression régulière : tester existence sous-chaine en fin de chaine
    Par GEFIRO1 dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 17/09/2007, 12h03
  5. Réponses: 9
    Dernier message: 07/09/2006, 13h47

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