Code ASCII en Java [urgent]

Fermé
OmEn - 2 avril 2002 à 14:16
 OmEn - 5 avril 2002 à 08:00
Bonjour à tous,
comment connaitre le code ASCII d'un charactère ? C'est la question que je me pose depuis un bon moment et je n'ai toujours pas de réponse alors si vous le savez et que vous êtes sympa, merci de me répondre au plus vite... Seconde question d'un autre sujet : est-je le droit de diffuser un programme de cryptage que j'ai fait sur le net ? La question est moins importante mais merci quand meme d'y répondre.

@+

-----OmEn [i2n]-----
----www.i-2n.net----

12 réponses

Utilisateur anonyme
2 avril 2002 à 14:21
Salut,

Pour le code ASCII, va à cette adresse:
http://www.chez.com/cosmos2000/Nombres/ASCII.html

Pour ce qui est de la diffusion, il n'y a aucun probleme à partir du moment que tes outils de développement sont licenciés.

Kalamit
"J'ai touché le fond, je commence à creuser"
2
Mais mon vrais probleme est la fonction en Java genre : char.toASCIICode ou un truc dans le genre ... Merci quand meme et est-ce que je doit avoir une licence pour mon propre programme ? Répond-moi ou n'import qui autres qui sache.


@+

-----OmEn [i2n]-----
----www.i-2n.net----
0
Kalamit > OmEn
2 avril 2002 à 14:49
'Scuse, n'avait pas compris la question.
Ca dépend de l'utilisation que tu veux en faire. Si c'est un freeware, tu n'as besoin de rien. Par contre si tu veux te faire payer, la, c'est plus compliqué.
Quelles sont tes intentions?

Kalamit
0
OmEn > Kalamit
2 avril 2002 à 14:57
Pour le crypteur je veux juste le distribuer gratuitement donc en freeware mais je ne sais toujours pas comment connaitre le code ASCII en Java, as-tu compris cette question ? La page que tu m'a donné au début n'était que les tableaux de codes mais mois j'aimerais une fonction Java pour faire le rapport caractère - code ASCII et inversement. Je suis toujours aussi speed et attend ta réponse.

@+

-----OmEn [i2n]-----
----www.i-2n.net----
0
Utilisateur anonyme > OmEn
2 avril 2002 à 15:01
Je suis désolé, je ne suis pas assez fort en java, pour te trouver la réponse.
Mais je pense que certaine personne devrait trouver la réponse assez facilement.

Kalamit
"J'ai touché le fond, je commence à creuser"
0
Peguinette t'as parfaitement répondu, tu dois utiliser des casts.

int codeASCII = 25;
char lettre;

lettre = (char) codeASCII;

------------------------------

int codeASCII;
char lettre = 'A';

codeASCII = (int) lettre;

-------------------------------

Voilà une clase qui gère tout ca :

class ASCII
{
public static char toChar(int codeASCII)
{
return (char)codeASCII;
}

public static int toASCII(char lettre)
{
return (int)lettre;
}
}
2
Je vais essayer mais si ca marche vraiment, je vous remercie beaucoup. J'ai tout-de-meme encore une question : quelle est la différence entre code ASCII et ISO ? Merci beaucoup et @+ !

OmEn (homme heureux)
www.i-2n.net
0
J'ai oublié de te demander : combien y a t il de code ASCII (255 par hasard ?) et que renvoie la méthode s'il ne figure pas dedans ? Merci encore...

@+

OmEn
i-2n.net
0
Je demande toujours ...

OmEn [i2n]

www.i-2n.net
0
Peguinette
Messages postés
176
Date d'inscription
vendredi 15 juin 2001
Statut
Membre
Dernière intervention
17 juillet 2003
30
2 avril 2002 à 18:18
Pour avoir le code ascii d'un Character, il me semble qu'il faut utiliser la methode : hashCode() qui te renvoie un int .

Bon courage, et déstresse, c'est contagieux.

---------
Peguinette
0
Merci vraiment beaucoup mais comment l'utiliser ? J'ai un char i et je fais i.hashCode() ? Mais je crois qu'on peut pas utiliser des fonctions sur un char, non ? Et comment faire pour l'inverse donc de int à char ? J'essaie de détresser mais c'est pas facile ...

@+

OmEn [i2n]
www.i-2n.net
0
Peguinette
Messages postés
176
Date d'inscription
vendredi 15 juin 2001
Statut
Membre
Dernière intervention
17 juillet 2003
30 > OmEn
3 avril 2002 à 09:51
La première chose à faire c'est ouvrir la javadoc de sun :
http://java.sun.com/products/jdk/1.2/docs/api/index.html

Ensuite, il est bon de savoir qu'un type (char, int, boolean ...) commençant par une minuscule est un type générique qui ne possède donc pas de méthodes propres. Alors qu'un type commençant par une majuscule est un objet (Character, Integer, Boolean ...), il possède donc des attributs et des méthodes (voir dans la javadoc.

Lorsque tu as un char et que tu veux son code ascii, il faut que tu instancies un objet Character qui sera initialisé par le char et qu'ensuite tu utilises la methode hashCode().

char monChar = 'A';
int monAscii = (new Character(monChar)).hashCode();

PS : pense à importer le package java.lang.* si ce n'est pas déjà fait.

---------
Peguinette
0
Merci beaucoup mais comment faire l'inverse ? C'est à dire d'avoir un int et de le transformer en son caractère, je vais chercher sur le site de Java dans la section Integer mais j'aimerais quand meme que tu me réponde.

@+

OmEn [i2n]
www.i-2n.net
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Encore une question : comment savoir si le caractère existe ou n'est-il pas possible qu'il n'existe pas ? Et comment connaitre le caractere à partir de son nombre ? Merci de me répondre aussi vite que les dernieres fois.

@+

OmEn [i2n]
www.i-2n.net
0
Peguinette
Messages postés
176
Date d'inscription
vendredi 15 juin 2001
Statut
Membre
Dernière intervention
17 juillet 2003
30
3 avril 2002 à 17:06
Si tu veux que je te réponde vite, ce serai mieux si tu écrivais ton message en faisant [Répondre à Peguinette] comme ca je recoit ton message par mail en plus du forum.

Pour ce qui est de la transformation inverse, je me souviens qu'il y a deux méthodes une trés simple et une plus complexe. Alors essaye d'abord de caster ton int en char.

int monInt;
char monChar= (char)monInt;

C'est peut etre ca la methode toute simple.

a+
---------
Peguinette
0
OmEn > Peguinette
Messages postés
176
Date d'inscription
vendredi 15 juin 2001
Statut
Membre
Dernière intervention
17 juillet 2003

3 avril 2002 à 19:49
Je crois que je ne me suis pas bien fait comprendre : vous m'avez tous donné plein de truc mais jamais ce que je veux. Ce que je veux c'est, à partir d'un char, connaitre son code ASCCI et non pas son code de hachage ! Donc un truc genre : 'P' ---> 126 et ensuite avoir l'inverse c'est-à-dire : 126 ---> 'P'. D'accord ? Je cherche partout : livres, forum, documentation du site officiel ... mais jamais personne ne m'a donné une de ces deux choses !!! J'ai besoin d'aide. Help me !

Merci d'avance et @+

OmEn
www.i-2n.net
0
OmEn > Peguinette
Messages postés
176
Date d'inscription
vendredi 15 juin 2001
Statut
Membre
Dernière intervention
17 juillet 2003

4 avril 2002 à 09:12
Tu dis que ca va plus vite ... tu t'es endormie sur ton clavier ou quoi ? Moi j'attend comme un con la et toi ? Merci de me répondre quand tu te sera réveillée et si ca me satisfait, je te laisserai te rendormir. D'accord ?

@+

OmEn
www.i-2n.net
0
Peguinette
Messages postés
176
Date d'inscription
vendredi 15 juin 2001
Statut
Membre
Dernière intervention
17 juillet 2003
30 > OmEn
4 avril 2002 à 09:57
J'ai un peut autre chose à foutre que de répondre sur le forum ccm. J'ai du boulot et je ne suis pas toujours dispo.

Il me semblait que le hashCode() était équivalent au code ascii. Sinon je t'ai dit d'essayer de caster tout simplement ta variable.

'P' --> ascii
char monChar='P';
int monInt = (int)monChar;

Ca fait longtemps que je l'ai plus fait alors fait des tests et tu finiras par trouver.

PS : fait une recherche sur le forum, il y a peut être un message correspondant à ce que tu cherches.

---------
Peguinette
0
J'ai beau chercher partout sur la doc de java je ne trouve pas comment faire le processus à l'envers... Aidez-moi je vous en supplie !

@+

OmEn [i2n]
www.i-2n.net
0
Merci beaucoup !!! La fonction marche !!! Je vous adore ... et dire que ca faisait au moins un mois que je cherchait partout. Mais il me faut encore savoir si mes idées sont justes :

- il y a en tout 255 caractère
- quand un caractère n'existe pas, cela renvoie -1

Est-ce vrai ?

@+

OmEN [i2n]
0
Je crois bien qu'ISO est une norme de qualité.
0
Mais je sais toujours pas combien il y a de caractère en tout ? J'ai essayer des caractère très spéciaux et ca me sortait des codes comme 8675 donc plus que 255 ... Pour mon prog il me faut savoir combien il y a de caractères . Merci.

OmEn
0
Répondez-moi ... Please
0
Aidez-moi ! Je vous en supplie ...

OmEn
0
Voila c'est fait, mais il reste quelques erreurs de caractère alors ou sont les erreurs dans le code suivant :

public void Crypt(String path)
{
try
{
BufferedReader in = new BufferedReader(new InputStreamReader(new FileInputStream(path)));
String line;
String text = "";
while((line = in.readLine()) != null) text += line + "\r";
String key = ikey.getText();
int l = 0;
String cryptedText = "";
for(int i = 0 ; i < text.length() ; i++)
{
char t = text.charAt(i);
int ti = (int)t;
if(ti > 254) cryptedText += t;
else
{
char k = key.charAt(l);
int ki = (int)k;
int tiki = ti + ki;
if(tiki > 254) tiki -= 254;
char tk = (char)tiki;
cryptedText += tk;
if(l >= key.length() - 1) l = 0;
else l++;
}
}
PrintWriter out = new PrintWriter(new FileWriter(path));
out.print(cryptedText.substring(0, cryptedText.length() - 1));
out.flush();
}
catch(IOException e)
{
}
}

S'il vous plaît ... aidez-moi !


@ +

OmEn
www.i-2n.net
0
Aidez-moi ! Voici mieux expliqué :

public void Crypt(String path)
{
try
{
// lecture du fichier à crypter et définition de la clé
BufferedReader in = new BufferedReader(new InputStreamReader(new FileInputStream(path)));
String line;
String text = "";
while((line = in.readLine()) != null) text += line + "\r";
String key = ikey.getText();
// traite chaque caractère un par un
int l = 0;
String cryptedText = "";
for(int i = 0 ; i < text.length() ; i++)
{
char t = text.charAt(i);
int ti = (int)t; // ransformation du caractère lu en code ASCII
if(ti > 254) cryptedText += t;
// ne pas crypter le caractère s'il n'est pas reconnu
else
{
char k = key.charAt(l);
int ki = (int)k; // transformer le caractère de la clé en code ASCII
int tiki = ti + ki; // addition des deux codes
if(tiki > 254) tiki -= 254; // si c'est trop grand, le diminuer
char tk = (char)tiki; // transformer le tout en caractère
cryptedText += tk; // l'ajouter au texte
if(l >= key.length() - 1) l = 0;
else l++;
}
}
//écriture du fichier crypté
PrintWriter out = new PrintWriter(new FileWriter(path));
out.print(cryptedText.substring(0, cryptedText.length() - 1));
out.flush();
}
catch(IOException e)
{
}
}


Merci beaucoup

@+

OmEn
0
Sicard_51
Messages postés
31
Date d'inscription
mercredi 13 février 2002
Statut
Membre
Dernière intervention
30 août 2003
5
5 avril 2002 à 00:41
batmap a raison pour l'unicode, qui par ailleurs existe sous 3 formes (l'unicode 8 bits, 16 bits et 32 bits, le plus utilisé aujourd'hui étant le 8 bits qui permet de coder a peu près tous les caractères).

Toutefois, tu peux spécifier le format d'encodage de tes caractères avec java.

Je sais que j'ai vu ça dans l'api mais je l'ai pas retrouver la tout de suite.
Va voir dans java.io du côté de BufferedWriter, je crois que tu pourras trouver un lien vers les différents codages supportés.

Sicard_51, la bonne brioche anisée!
0
batmat
Messages postés
1871
Date d'inscription
jeudi 1 novembre 2001
Statut
Membre
Dernière intervention
9 janvier 2008
114
4 avril 2002 à 23:46
eh ben moi je dirais que le probleme ce que je crois que tu te plantes (tout ceux qui t'ont parlé d'ASCII d'ailleurs), le java pour garantir une portabilité la plus grande possible utilise unicode et non ASCII !!! c pour ca que tu as trouvé un truc du genre 8512 comme code caractere...
par exemple si tu veux afficher un é
ca doit etre
System.out.println("\u00E9");
Je crois que UNICODE est sur 16 bits,mais je n'en mettrais pas ma main à couper => A vérifier,si c'est le cas , ca donne donc 2^16 possibilités différentes
OK ? ;)
@+

-------------------------
Vous hésitez entre Linux et Windows?
Vous voulez dépenser du temps ou de l'argent ?
0
C'est pas grave tout ce que vous dites car tout ce que je veux, c'est avoir un code qui différence chaque caractère et que ne change pas d'un machine à l'autre et j'ai eu ce que je voulais il y a un bon moment. Il me restait encore quelques questions mais j'ai réussi à les résoudre tout seul alors si vous voulez un preuve voila mon programme :

//merci de ne pas vous l'attribuer ou le mettre à votre nom
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.io.*;
public class TrivialApplication
{
public static void main(String[] args)
{
try
{
PrintWriter out = new PrintWriter(new FileWriter("help.txt"));
out.println("Ceci est un programme de cryptage, donc capable de crypter des fichiers. \rIl est totalementgratuit. Pour l'utiliser, double-cliquez sur le fichier \rMRJApplication.bin, une nouvelle fenetre s'ouvre avec deux champs et \rdeux bouttons. Tapez une clé de cryptage dans le premier champs \r(attention : notez la clé quelque part pour ne pas l'oublier), le premier \rboutton servira à crypter votre fichier et le second à le décrypter. Le \rdeuxième champ est celui où vous devez entrer le chemin du fichier. \rAvant de cliquer sur le boutton de cryptage, vérifiez bien d'avoir fait \rune copie du fichier que vous voulez crypter car le nouveau fichier le \rremplacera. Maintenant cliquez sur le boutton de cryptage, si le fichier \rn'est pas crypté, alors vérifiez que le chemin soit juste. Pour le décryptage, \rrefaite la même oppération sauf que cette fois-ci, pressez sur le boutton \rde décryptage. Voila tout ce que vous devez savoir. OmEn [i2n] www.i-2n.net \r");
out.flush();
}
catch(IOException e){}
IOCryptEur crypt = new IOCryptEur();
crypt.show();
}
}
public class IOCryptEur extends Frame
{
TextField ikey;
Button crypt;
Button decrypt;
TextField itext;
public IOCryptEur()
{
setTitle("The i2n OmEn's CryPteur (" + System.getProperty("user.name") + ")");
setSize(260, 60);
setLocation(40, 60);
setResizable(false);
setLayout(new FlowLayout());
setFont(new Font("Monaco", Font.PLAIN, 10));

ikey = new TextField("", 16);
crypt = new Button("Crypt");
decrypt = new Button("Decrypt");
itext = new TextField("", 35);

add(ikey);
add(crypt);
add(decrypt);
add(itext);

itext.setText(System.getProperty("user.dir") + "/");

addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
dispose();
System.exit(0);
}
});

crypt.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
try
{
File file = new File(itext.getText());
if(file.isDirectory())
{
String[] ilist = file.list();
for(int i = 0 ; i < ilist.length ; i++)
{
File c = new File(ilist[i]);
Crypt(c.getCanonicalPath());
}
}
else Crypt(file.getCanonicalPath());
}
catch(IOException o){}
}
});

decrypt.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
try
{
File file = new File(itext.getText());
if(file.isDirectory())
{
String[] ilist = file.list();
for(int i = 0 ; i < ilist.length ; i++)
{
File d = new File(ilist[i]);
DeCrypt(d.getCanonicalPath());
}
}
else DeCrypt(file.getCanonicalPath());
}
catch(IOException o){}
}
});

}
public void DeCrypt(String path)
{
try
{
BufferedReader in = new BufferedReader(new InputStreamReader(new FileInputStream(path)));
String line;
String text = "";
while((line = in.readLine()) != null) text += line + "\r";
String key = ikey.getText();
int l = 0;
String cryptedText = "";
for(int i = 0 ; i < text.length() ; i++)
{
char t = text.charAt(i);
int ti = (int)t;
if(ti > 126) cryptedText += t;
else
{
char k = key.charAt(l);
int ki = (int)k;
int tiki = ti - ki;
if(tiki < 0) tiki += 126;
char tk = (char)tiki;
cryptedText += tk;
if(l >= key.length() - 1) l = 0;
else l++;
}
}
PrintWriter out = new PrintWriter(new FileWriter(path));
out.print(cryptedText.substring(0, cryptedText.length()));
out.flush();
}
catch(IOException e)
{
}
}
public void Crypt(String path)
{
try
{
BufferedReader in = new BufferedReader(new InputStreamReader(new FileInputStream(path)));
String line;
String text = "";
while((line = in.readLine()) != null) text += line + "\r";
String key = ikey.getText();
int l = 0;
String decryptedText = "";
for(int i = 0 ; i < text.length() ; i++)
{
char t = text.charAt(i);
int ti = (int)t;
if(ti > 126) decryptedText += t;
else
{
char k = key.charAt(l);
int ki = (int)k;
int tiki = ti + ki;
if(tiki > 126) tiki -= 126;
char tk = (char)tiki;
decryptedText += tk;
if(l >= key.length() - 1) l = 0;
else l++;
}
}
PrintWriter out = new PrintWriter(new FileWriter(path));
out.print(decryptedText.substring(0, decryptedText.length()));
out.flush();
}
catch(IOException e)
{
}
}
}


Si vous voulez en savoir plus rendez-vous sur http://www.i-2n.net/cours/cryptographie
c'est un petit cours que j'ai fait sur la crypto.

Bonne chance à vous !

OmEn [i2n]
www.i-2n.net
0