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

Collection et Stream Java Discussion :

Concatenation de byte array


Sujet :

Collection et Stream Java

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2005
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 40
    Par défaut Concatenation de byte array
    Bonjour

    j'essaye de concatener des bytes[] mais j'eprouve quelques difficultes pour ne pas perdre des donnees.
    Au passage je souhaite modifier la valeur du premier bit par la commande
    tmp_mb[0]+128 est ce que cela est possible ?

    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
    19
    20
    21
     
    Vector records=new Vector();
    records.addElement(record1);
    records.addElement(record2);
     
    //set MB for the first record
    byte[] tmp_mb=((MyRecord)records.get(0)).toByteArray();
    //tmp_mb[0]=(byte)(tmp_mb[0]+128);
     
    int sizeOfLastRecord=tmp_mb.length;
     
    byte[] ndef=new byte[tmp_mb.length];
    byte[] tmp_ndef=tmp_mb;
    System.arraycopy(tmp_mb,0,ndef,0,tmp_mb.length);
     
    for(int i=1;i<records.size();i++){				byte[] tmp=((MyRecord)records.get(i)).toByteArray();	sizeOfLastRecord=tmp.length;
    	System.arraycopy(ndef,0,tmp_ndef,0,ndef.length);
    	tmp_ndef=new byte[ndef.length+tmp.length];
    	System.arraycopy(tmp,0,tmp_ndef,ndef.length,tmp.length);
    	ndef=tmp_ndef;
    	}
    sachant que je travail sous j2me et que je ne peut donc utiliser des arraylist linkedlist et Vector.toArray, est-ce quelqu'un peut me donner une solution pour gerer cette concatenation !

    Merci d'avance

  2. #2
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 2
    Par défaut
    Pour le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tmp_mb[0]=(byte)(tmp_mb[0]+128);
    tu risques d'avoir des problème de nombre négatif.
    essai plutot quelque chose comme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tmp_mb[0] |= (1 << 7 );
    Pour la copie des objets sur un tableau ; il faut d'abord allouer la totalité du tableau.
    Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    byte[] tmp_mb = new byte[ records.size() * taille_d_un_element ];
    Ensuite tu fais les System.arraycopy.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2005
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 40
    Par défaut
    merci pour la reponse,

    malheureusement je ne peut connaitre la taille totale des elements et c'est pour cela que je bataille en voulant faire des allocations dynamiques.

    Pour le decalage de bits je n'ai pas tout compris, ce que je souhaite c'est modifier un bit de mon octet sans toucher au autre car chaque bit represente une option dans mon prog.

    Avant: 10101111 Apres:11101111

  4. #4
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 2
    Par défaut
    malheureusement je ne peut connaitre la taille totale des elements
    Il est donc necessaire de faire une boucle à l'avance pour connaitre la taille totale avant d'allouer quoi que ce soit; ou alors utiliser une java.util.List de byte[]; mais cela ne correspondrait sans doute plus à ton besoin.

    Pour le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tmp_mb[0] |= (1 << 7 );
    La partie |= t'assure de transformer que les bits qui t'intéressent en 1. Ensuite le ( 1 << 7 ) ; c'était pour remplacer le 128; tu peux garder 128 ou écrire le nombre en binaire (0x00) je crois ; cela sera plus facile à lire.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Février 2005
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 40
    Par défaut
    ok merci

    je suis pas encore au point sur la manipulation de bit en java !

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 07/04/2008, 10h44
  2. Comparaison de byte array
    Par olibara dans le forum C#
    Réponses: 2
    Dernier message: 06/04/2008, 10h42
  3. Concatener des bytes en C
    Par pegase.90 dans le forum C
    Réponses: 15
    Dernier message: 29/01/2007, 22h18
  4. Réponses: 3
    Dernier message: 03/05/2005, 18h16

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