Correction Fonction Conversion

Fermé
cervo_solo Messages postés 71 Date d'inscription vendredi 2 mars 2007 Statut Membre Dernière intervention 19 juin 2013 - 20 janv. 2013 à 10:27
cervo_solo Messages postés 71 Date d'inscription vendredi 2 mars 2007 Statut Membre Dernière intervention 19 juin 2013 - 29 mars 2013 à 13:41
Bonjour,

Bonjour à tous ,
je veux convertir ma chaine binaire en string car je suis arrivé déja à faire l'inverse cependant la fonction que j'ai écrite pour resoudre ce petit probleme a quelques bugs elle ne gère pas les caractères spéciaux(codés sur 4 bits), les saut de lignes(4bits) ou les espace(6bits). Ayant l'esprit combatif j'ai encore ecrit une fonction qui peut me permettre de completer les bits manquants en inserant des caracteres "0"; là aussi ça ne marche pas !! quelqu'un pour m'aider ?
Voici ma Fonction de conversion

public static String ConversionString(String arg)
{
String Chaîne = "";
char nextChar;

for(int i = 0; i < arg.length(); i += 7)
{
String Corde = arg.substring(i, i+7);

nextChar = (char)Integer.parseInt(Corde,2);
Chaîne += nextChar;
}

return Chaîne ;

}

Notez qu'elle travaille correctement quand tous les caracteres sont codés sur les 7 bits



voici ma methode de correction auto qui ne marche pas:

{
String Expression = "";
String decoupe = "";
int taille = decoupe.length();


for(int i = 0 ; i < arg.length() ; i+=7)
{
decoupe = arg.substring(i, i+7);
if(taille < 7)
{
do
{
decoupe = "0" + decoupe;

}while (taille == 7);
}
}
return Expression;


aidez moi vu mon contexte a corriger soit la fonction conversion ou correction s'il vous plaît


A voir également:

2 réponses

KX Messages postés 16755 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 12 février 2025 3 020
20 janv. 2013 à 15:47
Pourquoi tu prend des caractères codés sur 7 bits ? En Java les caractères sont Unicode donc leur taille n'est pas fixe puisqu'elle est de 8 ou 16 bits, mais pas 7 !

Plutôt que de faire ton découpage en substring, int, char, qui est évidemment faux et pour lesquels tu multiplies inutilement les cas particuliers, regarde la méthode toCharArray() qui te renvoie le tableau de caractères que compose la String, ou peut-être même mieux, la méthode getBytes() qui te renvoie le tableau d'octets que tu n'as alors plus qu'à afficher.

Voici par exemple comment on pourrais faire en s'aidant des BigInteger :

/**
 * Convertit une chaîne de caractères en binaire.
 * Attention : les '0' à gauche ne sont pas représentés, si la chaîne de caractères commence par un ou plusieurs caractères '\0' ceux-ci ne seront pas conservés.
 * @param text une chaîne de caractères
 * @return sa représentation en binaire
 */
public static String textToBin(String text)
{
	return new BigInteger(text.getBytes()).toString(2);
}

/**
 * Convertit du binaire en chaîne de caractères.
 * Attention : les '0' à gauche ne sont pas utilisés, s'ils doivent représenter un ou plusieurs caractères '\0' ceux-ci ne seront pas restitués.
 * @param bin une représentation binaire d'une chaîne de caractères
 * @return la chaîne de caractères de correspondante
 */
public static String binToText(String bin)
{
	return new String(new BigInteger(bin,2).toByteArray());
}

public static void main(String[] args)
{
	String s1 = "test";
	String s2 = textToBin(s1);
	System.out.println(s2);
	
	String s3 = "0110111101101011";
	String s4 = binToText(s3);
	System.out.println(s4);
	
	String s5 = "000000000000000000110101101101111";
	String s6 = binToText(s5);
	System.out.println(s6);
}
0
cervo_solo Messages postés 71 Date d'inscription vendredi 2 mars 2007 Statut Membre Dernière intervention 19 juin 2013 1
29 mars 2013 à 13:41
merci beaucoup !
0