dahwoud Posté(e) 18 novembre 2010 Share Posté(e) 18 novembre 2010 Salut. je souhaite lire le contenu d'un fichier plat octet par octet en pièce jointe. J'utilise la méthode read(byte[] buffer) de FileInputStream. En consultant la valeur de chaque byte en debug via eclipse / emulator ou eclipse /desire, j'obtiens des résultats assez bizarre, je m'explique. le premier caractère que je lis est £, qui donne 163 en décimal / A3 en hexadécimal, alors qu'en consultant le même fichier avec un éditeur hexadécimal sur mon poste de dev, j'obiens bien la valeur décimal de l'octet associé au caractère £. Le problème se produit dès qu'un caractère à une valeur décimal > 127. Avez-vous une piste pour m'expliquer ce comportement ? Ci-dessous le code exécuté, sample.txt est en pièce jointe au post. byte[] bytes = new byte[512]; FileInputStream stream = new FileInputStream("/sdcard/sample.txt"); stream.read(bytes); Merci Lien vers le commentaire Partager sur d’autres sites More sharing options...
houmiak Posté(e) 18 novembre 2010 Share Posté(e) 18 novembre 2010 Je ne comprend pas ton problème. 163 (0xA3) correspond bien au caractère £. Tu obtiens qqch de différent? Salut. je souhaite lire le contenu d'un fichier plat octet par octet en pièce jointe. J'utilise la méthode read(byte[] buffer) de FileInputStream. En consultant la valeur de chaque byte en debug via eclipse / emulator ou eclipse /desire, j'obtiens des résultats assez bizarre, je m'explique. le premier caractère que je lis est £, qui donne 163 en décimal / A3 en hexadécimal, alors qu'en consultant le même fichier avec un éditeur hexadécimal sur mon poste de dev, j'obiens bien la valeur décimal de l'octet associé au caractère £. Le problème se produit dès qu'un caractère à une valeur décimal > 127. Avez-vous une piste pour m'expliquer ce comportement ? Ci-dessous le code exécuté, sample.txt est en pièce jointe au post. byte[] bytes = new byte[512]; FileInputStream stream = new FileInputStream("/sdcard/sample.txt"); stream.read(bytes); Merci Lien vers le commentaire Partager sur d’autres sites More sharing options...
dahwoud Posté(e) 18 novembre 2010 Auteur Share Posté(e) 18 novembre 2010 En fait je devrais lire 163 et je lis 111. Merci Lien vers le commentaire Partager sur d’autres sites More sharing options...
houmiak Posté(e) 19 novembre 2010 Share Posté(e) 19 novembre 2010 Le byte est un type qui prend une valeur de -128 à +127. Ceci pourrai donc bien expliquer ton problème. En fait je devrais lire 163 et je lis 111. Merci Lien vers le commentaire Partager sur d’autres sites More sharing options...
Recommended Posts
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.