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

Entrée/Sortie Java Discussion :

convertir tableau de byte en String


Sujet :

Entrée/Sortie Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 61
    Par défaut convertir tableau de byte en String
    Bonjour je suis nouveau sur le forum ( bien que je le consulte depuis 3 ans pour trouver des idées).

    Je suis sur un projet scolaire ( en master informatique).
    Mon problème est le suivant:
    1. j'ai une image sur le disque que je recupère en tableau de byte (fait)
    2. je veux maintenant transformer ce tableau de byte en tableau String , pour que plus tard je reprenne ce tableau de String et le convertis en tableau de byte afin de reconsituer l'image ( non fait)


    Ma première question est comment convertir un byte [] en String [] (je veux que ce String[] contienne ce qui s'affiche quand on affiche le contenu du byte[] via System.out.println() ).
    Ma seconde question est de savoir comment récuperer l'entete du fichier image via ce tableau de byte (entete qui contient la taille, le type, etc...)

    J'espère avoir été au maximum clair, sinon n'hesitez pas à me le faire savoir.

    Merci

  2. #2
    Membre Expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Par défaut
    Citation Envoyé par geek21 Voir le message
    [*]je veux maintenant transformer ce tableau de byte en tableau String , pour que plus tard je reprenne ce tableau de String et le convertis en tableau de byte afin de reconsituer l'image ( non fait)
    Tu l'as en byte[] et quand tu voudras le récupérer tu le voudras en byte[]. Pourquoi tu veux passer par un String (ce qui d'ailleurs n'aurait aucun sens pour une image)?

  3. #3
    Membre expérimenté Avatar de Amine_sas
    Profil pro
    Étudiant
    Inscrit en
    Juin 2005
    Messages
    245
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2005
    Messages : 245
    Par défaut
    Salut

    Citation Envoyé par ®om Voir le message
    Tu l'as en byte[] et quand tu voudras le récupérer tu le voudras en byte[]. Pourquoi tu veux passer par un String (ce qui d'ailleurs n'aurait aucun sens pour une image)?
    Oui évidemment.

    Pour l'entete, tu peux le lire directement du fichier et n'arranger dans le tableau byte que les données utiles de l'image.
    L'entete differe d'un format a l'autre, par exmple pour un fichier bmp:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    RandomAccessFile imgFile = new RandomAccessFile(imgName,"rw");
     
    String id = "" + (char)imgFile.readByte() + (char) imgFile.readByte();
    System.out.println("Identifier: " + id ); // doit afficher BM
     
    int fileSize = Integer.reverseBytes(imgFile.readInt());
     // car les 4 octets sont inversés dans le fichier.
    System.out.println("FileSize: " + fileSize);
     
    .......
    A toi de jouer.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 61
    Par défaut
    Citation Envoyé par ®om Voir le message
    Tu l'as en byte[] et quand tu voudras le récupérer tu le voudras en byte[]. Pourquoi tu veux passer par un String (ce qui d'ailleurs n'aurait aucun sens pour une image)?
    En faite j'ai besoin de la passer en String afin de pouvoir coder manuelement le contenu du tableau de String (sauf l'entete que je souhaite isolée). Plus tard je decode ce tableau de String et le retransforme en tableau de byte.

    Donc ce que je cherche c'est comment passer du byte[] en String[] sans altérer le contenu du byte[].

    Amine_sas je vais m'empresser de tester cela.

    merci à vous

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 61
    Par défaut
    J'ai trouvé la solution pour mon premier problème.
    Je vous explique ce que j'ai fais pour que vous puissiez m'aider si possiblepour ma seconde question.
    Donc j'ai pris mon tableau byte[] TabByte (qui est rempli avec les bytes lus sur à partir d'une image). Par exemple l'affichage console de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    for(int i=0;i<TabByte.length;i++)
                System.out.print(TabByte[i]);
    me donne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    -1-40-1-3201674707370011107207200-1
    Ensuite je prend TabByte et l'utilise de la façon suivante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    String [] ByteEnString=new String[TabByte.length]
    for(int i=0;i<TabByte.length;i++)
                    ByteEnString[i]=String.valueOf(TabByte[i]);
    J'obtiens ainsi la représentation en String de TabByte et l'affichage suivant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    for(int i=0;i<ByeEnString.length;i++)
                System.out.print(ByteEnString[i]);
    me donne exactement la même chose que le première affichage,c'est-à-dire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    -1-40-1-3201674707370011107207200-1
    Ma question maintenant est de savoir sur combien de byte l'entete de l'image est stocké (sur les 5 premiers? 10 premiers?).

    si quelqu'un maitrise les images en java....

  6. #6
    Membre expérimenté Avatar de Amine_sas
    Profil pro
    Étudiant
    Inscrit en
    Juin 2005
    Messages
    245
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2005
    Messages : 245
    Par défaut
    Citation Envoyé par geek21 Voir le message
    J'obtiens ainsi la représentation en String de TabByte et l'affichage suivant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    for(int i=0;i<ByeEnString.length;i++)
                System.out.print(ByteEnString[i]);
    me donne exactement la même chose que le première affichage,c'est-à-dire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    -1-40-1-3201674707370011107207200-1
    .
    Toujours difficile de trouver une raison pour cette conversion, (peut etre tu nous l'avouera).

    Ma question maintenant est de savoir sur combien de byte l'entete de l'image est stocké (sur les 5 premiers? 10 premiers?).

    si quelqu'un maitrise les images en java....
    ça depend énormement du type de l'image, ça differe entre BMP, Gif, JPG ...etc. Par exemple l'entete du format bmp contient entre autre:
    - Un idetifiant sur 2 octets.
    - La taille du fichier sur 4 octets.
    - Puis, 4 octets réservés.
    - Dataoffset (L'adresse du premier octet des données utiles dans le fichier) sur 4 octets .
    ....
    Cherches su google pour en apprendre davantage.

    @+

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 61
    Par défaut
    Citation Envoyé par Amine_sas
    Toujours difficile de trouver une raison pour cette conversion, (peut etre tu nous l'avouera).
    Je fais cette conversion car j'ai besoin de manipuler les bytes de l'image. Mais cette manipulation ne peut se faire que sur des String, c'est pour cela que je convertis le byte [] en String[]. La manipulation consiste à appliquer tout d'abord la Transformée de Burrows-Wheeler, et ensuite appliquer le Move To Front ( une explication est fournie ici et ici) qui sont des techniques de préparation pour la compression de l'image.

    Je ne vais utiliser que des JPEG pour mon projet, car le principe est le même du moment qu'on connait la taille de l'entete.
    C'est difficile de trouver de la doc la dessus j'ai cherché mais je n'ai rien trouvé de complet, seulement des approximations.

    Merci quand même.

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

Discussions similaires

  1. [Débutant] Convertir un tableau de byte en string
    Par bipbip2006 dans le forum C#
    Réponses: 4
    Dernier message: 04/07/2011, 22h41
  2. Transformer un tableau de Byte en string
    Par kinouseb dans le forum Windows Forms
    Réponses: 3
    Dernier message: 13/01/2009, 17h09
  3. tableau de byte en String
    Par lerab51 dans le forum Collection et Stream
    Réponses: 10
    Dernier message: 22/05/2008, 10h12
  4. conversion d'un tableau de bytes en string
    Par prady92 dans le forum VB.NET
    Réponses: 3
    Dernier message: 16/03/2007, 13h47
  5. [debutant]Convertir un pointeur byte en String
    Par patmaba dans le forum SL & STL
    Réponses: 3
    Dernier message: 22/07/2005, 13h34

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