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

Langage Java Discussion :

Fichier en BYTE


Sujet :

Langage Java

  1. #1
    Membre éprouvé

    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 448
    Points : 1 234
    Points
    1 234
    Par défaut Fichier en BYTE
    Je suis completement perdu (et y a de quoi).
    Pour écrire un fichier de byte on fait par exemple write(byte[] b, int off, int len).
    Donc on écrit une suite de valeurs de -128 à 127.
    Par contre si on fait par exemple read() on lit une valeur de 0 à 255.

    Grr... c'est quoi ce délire ?
    Apparement chez java y a byte et byte (à ne pas confondre avec Byte).

  2. #2
    Membre expérimenté Avatar de BainE
    Inscrit en
    Mai 2004
    Messages
    1 327
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 1 327
    Points : 1 544
    Points
    1 544
    Par défaut
    salut,

    je crois que c'est meme encore plus compliqué que ca.
    un byte java va de -128 a 127.
    par contre il gere les caractere en UNICODE (caractere a longueur aléatoire)...
    un byte java c'est un peu unsigned char en C.

    Mais rassure toi un byte va de -128 a 127.

    Pour Byte c'est juste le wrapper facon Objet du type primitif byte

  3. #3
    Membre éprouvé

    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 448
    Points : 1 234
    Points
    1 234
    Par défaut
    Que quelqu'un me dise enfin comment construire un fichier avec de octets 0..255.
    Et comment le lire.

    C'est tout ce que je veux savoir, rien d'autre et surtout plus de détours qui répondent à côté de la question.

  4. #4
    Membre éprouvé

    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 448
    Points : 1 234
    Points
    1 234
    Par défaut
    Personne ne va donc jamais me dire comment écrire/lire un fichier composé uniquement de valeurs allant de 0 à 255 ?

  5. #5
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 851
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 851
    Points : 22 863
    Points
    22 863
    Billets dans le blog
    51
    Par défaut
    Tu n'as pas besoin de faire quoi que ce soit de special. Un Byte signe n'est juste qu'une maniere d'interpreter un Byte non-signe : on interprete le bit en indice 7 comme etant un indicateur de signe. Si tu ecris ton fichier avec Java, un progamme C++ sera capable de lire sans pb. Meme si Java ne voit que des valeur [-127, +127].

    Apres si cela t'ennuie en Java de travailler avec des valeur negatives, tu peux utiliser des char, des shorts, ou des ints ou meme des longs dont tu ne conserveras que les 8 bits de poids faible (indices [7-0]).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    out.write((byte)(iVal & 0xFF));
    Idem pour remplir un tableau de byte[], si tu preferes bufferiser :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    bytes[i] = (byte)(iVal & 0xFF);
    De plus, si tu regardes la doc de la methode write prenant un int en parametre, tu verras qu'elle n'ecris pas 4 octets mais un seul :

    Citation Envoyé par Javadoc/Outputstream
    public abstract void write(int b) throws IOException

    Writes the specified byte to this output stream. The general contract for write is that one byte is written to the output stream. The byte to be written is the eight low-order bits of the argument b. The 24 high-order bits of b are ignored.

  6. #6
    Membre éprouvé

    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 448
    Points : 1 234
    Points
    1 234
    Par défaut
    Merci pour la réponse.

  7. #7
    Membre expérimenté Avatar de BainE
    Inscrit en
    Mai 2004
    Messages
    1 327
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 1 327
    Points : 1 544
    Points
    1 544
    Par défaut
    pour ta gouverne la question était
    Grr... c'est quoi ce délire ?
    je pense avoir repondu a cette question : Aucun delire
    La prochaine fois tu sera plus explicite

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

Discussions similaires

  1. Convertir un fichier en byte Array
    Par ssimon dans le forum Entrée/Sortie
    Réponses: 1
    Dernier message: 17/06/2010, 09h04
  2. [Fichiers] Lire byte à byte
    Par Invité dans le forum Général Python
    Réponses: 12
    Dernier message: 15/01/2010, 13h47
  3. Extraire une partie d'un fichier de bytes
    Par Cedwik dans le forum Flex
    Réponses: 1
    Dernier message: 14/04/2008, 11h27
  4. Lire/créer un fichier de byte
    Par laclac dans le forum Langage
    Réponses: 4
    Dernier message: 18/04/2007, 13h53
  5. [VBA-x]Convertir fichier en bytes()
    Par Stef784ever dans le forum Général VBA
    Réponses: 2
    Dernier message: 01/02/2007, 10h11

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