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 :

String en Octet


Sujet :

Langage Java

  1. #1
    Membre confirmé
    Inscrit en
    Octobre 2007
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 72
    Par défaut String en Octet
    Bonjour,

    Je cherche à mettre en Octet(soit un Byte, si j'ai bien compris) un chaine de caractère, un String plus exactement.

    Après plusieurs essai tomber à l'eau, je vous demande votre aide.

    j'ai essayé les :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    String test = "bonjour";
    byte res[] = test.getBytes();
    => NullPointerException

    ou encore :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    String test = "bonjour";
    byte res[] = (byte[])test;
    => Pas de cast possible

    ou encore :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    String test = "bonjour";
    byte res = Byte.parseByte(test);
    => NullPointerException

    Voili, avec d'autre essai...

    Si vous avez dans la poche une solution, please...

    merci

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    1 252
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 252
    Par défaut
    Essaie peut-être les autres méthodes getBytes(). getBytes(String charset) par exemple.

    Ton cas me semble extrêmement bizarre !

    P.S. oui, un octet (français) = un byte (anglais).

  3. #3
    Membre confirmé
    Inscrit en
    Octobre 2007
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 72
    Par défaut
    Concernant ton test, j'obtient un UnsupportedEncodingException en testant UTF-8, 8859-1, ...

    Pour mes tests, rectification pour le premier qui ne m'affiche pas de NullPointerException.
    Par contre lorsque j'affiche, la valeur de 'res[0]', il me retourne '166', bizarre pour des octets ????? Que signifie res[0] ou res[1] pour un String ???
    Si la valeur est correct, comment pourrais-je traiter mon retour 'res[]' sans pouvoir connaitre sa longueur, car je ne peut pas faire de 'length' ou 'size' sur 'res[]'.

    Merci

  4. #4
    Membre confirmé
    Inscrit en
    Octobre 2007
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 72
    Par défaut
    Ah oui, nouveau test à l'eau :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    String test = "bonjour";
    Byte res = Byte.decode(test);
    => NumberFormatException

    Je crois que je vais tout avoir

    Merci pour votre aide

  5. #5
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,

    Citation Envoyé par gdev7 Voir le message
    Concernant ton test, j'obtient un UnsupportedEncodingException en testant UTF-8, 8859-1, ...
    On pourrait voir ton code ?

    Citation Envoyé par gdev7 Voir le message
    Par contre lorsque j'affiche, la valeur de 'res[0]', il me retourne '166', bizarre pour des octets ?????
    Même remarque que ci-dessus...

    Citation Envoyé par gdev7 Voir le message
    Que signifie res[0] ou res[1] pour un String ???
    Tu n'utilises plus un String mais un tableau de bytes !

    Citation Envoyé par gdev7 Voir le message
    Si la valeur est correct, comment pourrais-je traiter mon retour 'res[]' sans pouvoir connaitre sa longueur, car je ne peut pas faire de 'length' ou 'size' sur 'res[]'.
    Tu peut très bien utiliser length sur un tableau...

    Citation Envoyé par gdev7 Voir le message
    Ah oui, nouveau test à l'eau :
    Il faut lire la JavaDoc : Byte.decode() interprète une chaine de caractère comme un nombre !



    Quel est l'objectif final de tout cela ?

    a++

  6. #6
    Membre confirmé
    Inscrit en
    Octobre 2007
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 72
    Par défaut
    C'est encore moi

    Alors j'approche de la reponse, je pense :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    byte res[]= new byte[50];
    String field = "Bonjour";
    res = field.getBytes();
     
    for(int i=0 ; i<res.length ; i++){
     // affichage de '[I]res'
     // affichage de '(char)res[i]'
    }
    resultat :
    Test res : 66
    Test res : B
    Test res : 111
    Test res : o
    Test res : 110
    Test res : n
    Test res : 106
    Test res : j
    Test res : 111
    Test res : o
    Test res : 117
    Test res : u
    Test res : 114
    Test res : r

    Maintenant ma question est que représente ces chiffres (66, 111, ...)? je pense que ce sont des octets mais un octet a trois chiffre ? ou est-ce 2 octets ? mais je ne pense pas (ex : 0111)

    A vous...

  7. #7
    Membre confirmé
    Inscrit en
    Octobre 2007
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 72
    Par défaut
    Pour te répondre adiGuba,
    1- mon code est ci-dessus.
    2- Oui, pour length, j'ai réussi finalement.
    3- Pour le decode, mauvaise interprétation de ma part (l'anglais n'est pas mon fort mais quand même)
    4- L'objectif final est :
    -> je reçois un ASCII String en entrée dont je ne connais pas le format mais qui à l'air identique
    -> je doit ensuite le découpé pour prendre le 1er octet, puis les 2 suivants, puis le suivant, ...

    Voili, pour le signification par contre ????

  8. #8
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Ben un octet c'est une valeur numérique pouvant stocker 256 éléments distincts, qui en Java sont représenté par un byte avec des valeurs allant de -128 à 127...

    Ce n'est qu'une représentation en décimal d'un octet comme il peut y en avoir d'autres (en binaire, en octal, en héxa,...).


    Bref tu obtiens bien tes octets... à toi d'en faire ce que tu veux !

    a++

  9. #9
    Membre confirmé
    Inscrit en
    Octobre 2007
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 72
    Par défaut
    Je te remercie, je venais de trouver l'explication sur le net, avec un beau tableau : http://www.interclasse.com/articles/units.php

    Me reste plus qu'as transcrire ce décimal en hexadecimal, je n'ai pas commencer mes recherches encore.

    Je mettrais résolu après tout ça.

    @ ta leur

  10. #10
    Membre confirmé
    Inscrit en
    Octobre 2007
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 72
    Par défaut
    Et voili le final :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    // Retourne le String dans un tableau de Byte
    byte monTableauDeByte[]= new byte[50];
    monTableauDeByte = ("monString").getBytes();
    // Prend le premier octet de mon Byte
    String stringHexa = Integer.toString((monTableauDeByte[0]&0xff)+0x100,16).substring(1);
    // Retourne dans un String la valeur en décimal du byteTaked représentant une valeur Hexa
    String stringDecimal = Integer.toString(Integer.parseInt(stringHexa, 16));
    et voili, merci encore pour les aides... @ +++

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

Discussions similaires

  1. Conversion string en "octet"
    Par ben1015 dans le forum MATLAB
    Réponses: 5
    Dernier message: 01/02/2012, 22h29
  2. Réponses: 1
    Dernier message: 25/10/2009, 20h26
  3. Modif d'octets sur table de strings
    Par Celestus dans le forum VBScript
    Réponses: 2
    Dernier message: 28/05/2008, 06h51
  4. [delphi 7] [String] [Tableau d'octets]
    Par mkiba dans le forum Débuter
    Réponses: 7
    Dernier message: 17/03/2008, 17h12
  5. Convertir un string en equivalent octet
    Par SPACHFR dans le forum Débuter
    Réponses: 5
    Dernier message: 21/08/2007, 11h32

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