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

Java Discussion :

Ajouter un byte


Sujet :

Java

  1. #1
    chouki
    Invité(e)
    Par défaut Ajouter un byte
    Bonjour voici le code auquel je voudrais ajouter un bit mais sa marche pas tellement

    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    import java.math.BigInteger;
    import java.util.Random;
     
    public class Principale {
    	static byte[] ajout(byte[] input) {
     
    		byte[] result = new byte[input.length+1];
     
    		result[0] = 1;
    		for (int i = 0; i < input.length; i++) {
    		result[i+1] = input[i];
    		}
    		return result;
    		}
     
    	static byte[] removeOneByte(byte[] input) {
    	byte[] result = new byte[input.length-1];
    	for (int i = 0; i < result.length; i++) {
    	result[i] = input[i+1];
    	}
    	return result;
    	}
    	public static void main(String args[]){
     
    			try {
    	        String chaine = "ççaa—";
    	        byte[] bytes = chaine.getBytes("ASCII"); //sans code ascii
    ajout(bytes)
    	   	        {
                    BigInteger amina=new BigIntegera (bytes);
     
                    BigInteger allooo= essai.encryption(amina);
                    byte[] ch=allooo.toByteArray();
                    String ss=new String(ch);
                   // System.out.println(ss);
     
                    BigInteger alloo= essai.decryption(allooo);
                    byte[]aa=alloo.toByteArray();
                    String s=new String(aa);
     
                 System.out.println(s);
    	        } 
    	} catch( java.io.UnsupportedEncodingException e ) {
    	           e.printStackTrace();
    	}
     
    	}
     
    }
    Dernière modification par chouki ; 22/01/2009 à 12h12.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Salut,
    Il faudrait utiliser le résultat de ta fonction ajout parce que là tu utilises le tableau passé en paramètre qui n'a pas été modifé, donc le résultat est normal...

    PS : question de vocabulaire mais plutôt importante : ce n'est pas un bit que tu ajoutes mais un octet (byte en anglais), ie 8 bits...

  3. #3
    chouki
    Invité(e)
    Par défaut
    Merci pour ton PS, il est trés important, le probléme est réglé c'est bon
    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    import java.math.BigInteger;
    import java.util.Random;
     
    public class Principale {
    	static byte[] ajout(byte[] input) {
     
    		byte[] result = new byte[input.length+1];
     
    		result[0] = 1;
    		for (int i = 0; i < input.length; i++) {
    		result[i+1] = input[i];
    		}
    		return result;
    		}
     
    	static byte[] retire(byte[] input) {
    	byte[] result = new byte[input.length-1];
    	for (int i = 0; i < result.length; i++) {
    	result[i] = input[i+1];
    	}
    	return result;
    	}
    	public static void main(String args[]){
     
    			try {
    	        String chaine = "ççaa";
    	        byte[] bytes = chaine.getBytes("ASCII"); 
    	   	        {
            BigInteger amina=new BigInteger (ajout (bytes));//modification           
                    BigInteger allooo= essai.encryption(amina);
                    byte[] ch=allooo.toByteArray();
                    String ss=new String(ch);
                   // System.out.println(ss);
     
                    BigInteger alloo= essai.decryption(allooo);
                    byte[]aa=retir(alloo.toByteArray());
                    String s=new String(aa);
     
                 System.out.println(s);
    	        } 
    	} catch( java.io.UnsupportedEncodingException e ) {
    	           e.printStackTrace();
    	}
     
    	}
     
    }
    J'ai une autre question pourquoi le decryptage de çç me donne ?? au lieu de çç comme pour le aa son decryptage me donne aa, j'ai remarqué que quelque caractéres en ascii comme é,à...etc me donne "?" , quand je retire ASCII du paramétre getString() le décrycryptage se fait correctement...je comprends pas ...
    Dernière modification par chouki ; 22/01/2009 à 12h23.

  4. #4
    Membre émérite Avatar de Tuxico
    Profil pro
    Étudiant
    Inscrit en
    Août 2003
    Messages
    662
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2003
    Messages : 662
    Par défaut
    Simplement parce que ç,à, etc font partie du codage ASCII étendu (8 bits) et que l'ASCII que tu utilises est l'ASCII 7 bits

  5. #5
    chouki
    Invité(e)
    Par défaut
    Pourtant j'ai rajoutais la fonction ajout(byte), sa peut pas régler le probléme?

  6. #6
    Membre Expert

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2004
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 301
    Par défaut
    Hello,

    tu confond l'ajout de byte et de bits (l'ascii étendu = ascii normal (7bits) + 1 bit = 1 byte au total (8bits)).

    Lorsque tu appelles "String#getBytes()", tu lui demande d'encoder une chaine dans un format particulier (ASCII), donc tu réclames une série de bytes représentant la chaine.
    Mais il est impossible de trouver une représentation binaire cohérente pour ces caractères dans ce charset particulier (logique, ils n'existent pas en ASCII, donc la méthode ne peut rien faire d'autre que mettre "?").

    Si tu veux vraiment conserver ces caractères, tu peux utiliser le charset ISO-8859-1, aussi nommé latin1. Ou alors l'UTF-8, qui lui te permettra de ne plus t'inquiéter de l'encodage des caractères pour quelques années

    A noter que les classes java.nio.charset.Charset et compagnie peuvent être très utiles pour convertir des représentations d'un charset vers un autre.

Discussions similaires

  1. Problème d'écriture fichier: ajout de bytes à 0
    Par Thedahu dans le forum Entrée/Sortie
    Réponses: 3
    Dernier message: 21/05/2014, 15h15
  2. ajout de tableau de bytes
    Par yassine228 dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 29/11/2007, 14h58
  3. Réponses: 2
    Dernier message: 03/10/2007, 16h45
  4. ajout de 2 byte[]
    Par laclac dans le forum Langage
    Réponses: 1
    Dernier message: 02/01/2007, 16h44
  5. Ajouter une aide
    Par Mailgifson dans le forum C++Builder
    Réponses: 5
    Dernier message: 12/06/2002, 13h32

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