Bonjour,

J'ai un fichier dans lequel se trouvent 3 séries d'octets chacune précédée de sa taille sur un octet.
Donc pour lire ce fichier, je lis le premier octet qui me donne la taille, j'alloue le byte[] et je fais un read dans ce byte[]

voila mon code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
      FileInputStream fileinput = new FileInputStream(file);
      byte[] input = new byte[fileinput.read()];
      fileinput.read(input);
 ..
Je lis bien la bonne taille, je prends tous les octets sans déborder sur la série suivante, mais malheureusement, ça me zappe le premier octet de chaque série, et je ne sais pas du tout pourquoi.

Alors, vu ma fatigue, ça pourrait venir de ma fonction de print, mais la faut m'expliquer pourquoi :

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
 
  private void print_hexa(byte[] hexa)
  {
    ByteBuffer bb = ByteBuffer.wrap(hexa);
    String s;
    for (int i = 0; i < bb.array().length - 1; ++i)
    {
      if (i % 16 == 0)
        System.out.println();   
      s = Integer.toHexString(bb.getShort(i) & 0xff);
      if (s.length() == 1)
        s = "0" + s;
      System.out.print(s + " ");
    }
    System.out.println();
  }
Donc une fois printé, mon byte[] contient exactement ce qu'il doit contenir a l'exception du premier octet qui a disparu.

Une idée qqun ?