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 :

cast un byte[] en char[]


Sujet :

avec Java

  1. #1
    Membre régulier Avatar de psycho_xn
    Inscrit en
    Mars 2007
    Messages
    250
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 250
    Points : 96
    Points
    96
    Par défaut cast un byte[] en char[]
    Bonjour,
    comment peut-on faire le cast d'un tableau de byte en un tableau de char ??

    autrement dit, j'ai une fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    public void Write1(char[] _buffer)
        {....}
    
    public void Write2(byte[] s,int l)
        {... 
            Write1((char[])(s));
    }
    le simple cast avec char[] ne marche pas

    Merci bcp

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    31
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 31
    Points : 38
    Points
    38
    Par défaut
    tu peux toujours caster chaque élément...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    byte[] testb = {1, 2, 3, 4, 5};
    char[] testc = new char[testb.length];
     
    for (int i = 0, length = testb.length; i < length; i++) {
      testc[i] = (char) testb[i];
    }

  3. #3
    Membre régulier Avatar de psycho_xn
    Inscrit en
    Mars 2007
    Messages
    250
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 250
    Points : 96
    Points
    96
    Par défaut
    Citation Envoyé par $eal20 Voir le message
    tu peux toujours caster chaque élément...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    byte[] testb = {1, 2, 3, 4, 5};
    char[] testc = new char[testb.length];
     
    for (int i = 0, length = testb.length; i < length; i++) {
      testc[i] = (char) testb[i];
    }
    mais là je passe tout le tableau en paramètre, donc je ne peux pas caster chaque élément à part

  4. #4
    Expert éminent sénior Avatar de Uther
    Homme Profil pro
    Tourneur Fraiseur
    Inscrit en
    Avril 2002
    Messages
    4 621
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Tourneur Fraiseur

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 621
    Points : 15 704
    Points
    15 704
    Par défaut
    Plus simple, sans passer par une boucle:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    char tableauChar = new String(tableauByte).toCharArray();
    Mais mieux vaut préciser l'encodage surtout si ton texte est susceptible de contenir des caractère ascii non standard:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    char tableauChar = new String(tableauByte, encodage).toCharArray();

  5. #5
    Membre éclairé
    Homme Profil pro
    NoOb
    Inscrit en
    Mai 2007
    Messages
    554
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : NoOb

    Informations forums :
    Inscription : Mai 2007
    Messages : 554
    Points : 852
    Points
    852
    Par défaut
    Bah si, tu le fait avant ton write.
    Ou avant de passer ton tableau en paramètre.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    public void Write(char[] _buffer)
        {....}
     
    public void Write(byte[] s) {
         char[] arf = new char[s.length];
     
         for (int i = 0, length = arf.length; i < length; i++) {
              arf[i] = (char) s[i];
         }
         Write(arf);
    }

  6. #6
    Expert éminent sénior
    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
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,

    Citation Envoyé par Uther Voir le message
    Plus simple, sans passer par une boucle:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    char tableauChar = new String(tableauByte).toCharArray();
    C'est de loin la meilleure solution, surtout en spécifiant le charset : le cast char <-> byte n'a aucun sens !!!


    @psycho_xn : quel sont les raisons de ce besoin étrange ?

    a++

  7. #7
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 567
    Points : 21 635
    Points
    21 635
    Par défaut
    Citation Envoyé par adiGuba Voir le message
    @psycho_xn : quel sont les raisons de ce besoin étrange ?
    Vu tous les besoins de ce genre, je suppose qu'il y a un chantier de portage de C++ moyennement objet vers Java.

    Et si c'est le cas, il est difficile de deviner de quelle manière passer d'un tableau de bytes à un tableau de char : en respectant la différence Java entre byte et char ou en laissant le traitement C++ inchangé ? Ce sont deux choses différentes.

Discussions similaires

  1. Convertir des wchar_t en byte (unsigned char)
    Par teddyalbina dans le forum Langage
    Réponses: 4
    Dernier message: 15/07/2011, 11h26
  2. probleme de cast implicite : byte.
    Par giova_fr dans le forum C#
    Réponses: 1
    Dernier message: 20/01/2011, 13h28
  3. Faire un cast de QSting en char*
    Par lisco dans le forum Qt
    Réponses: 11
    Dernier message: 18/05/2009, 14h01
  4. Réponses: 8
    Dernier message: 07/05/2008, 09h57
  5. Convertir BYTE[] vers char *
    Par LordBob dans le forum C++
    Réponses: 4
    Dernier message: 13/10/2007, 10h04

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