Téléchargement
illégal
Posez votre question Signaler

Code ASCII en Java [urgent]

OmEn - Dernière réponse le 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----
Lire la suite 

Code ASCII en Java [urgent] »

29 réponses
Réponse
+2
moins plus
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;
}
}
OmEn - 4 avril 2002 à 09:50
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
OmEn - 4 avril 2002 à 09:52
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
Ajouter un commentaire
Réponse
+1
moins plus
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"
Kalamit - 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
OmEn - 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----
kalamit- 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"
Ajouter un commentaire
Réponse
+0
moins plus
Je demande toujours ...

OmEn [i2n]

www.i-2n.net
Peguinette- 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
OmEn - 2 avril 2002 à 23:15
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
Peguinette- 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
Ajouter un commentaire
Réponse
+0
moins plus
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
Ajouter un commentaire
Réponse
+0
moins plus
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
OmEn - 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
OmEnPeguinette - 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
Peguinette- 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
Ajouter un commentaire
Réponse
+0
moins plus
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
Ajouter un commentaire
Réponse
+0
moins plus
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]
Ajouter un commentaire
Réponse
+0
moins plus
Je crois bien qu'ISO est une norme de qualité.
OmEn - 4 avril 2002 à 10:07
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
OmEn - 4 avril 2002 à 10:33
Répondez-moi ... Please
OmEn - 4 avril 2002 à 18:49
Aidez-moi ! Je vous en supplie ...

OmEn
Ajouter un commentaire
Réponse
+0
moins plus
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
Ajouter un commentaire
Réponse
+0
moins plus
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
Sicard_51- 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!
Ajouter un commentaire
Réponse
+0
moins plus
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 ?
Ajouter un commentaire
Réponse
+0
moins plus
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
Ajouter un commentaire
Ce document intitulé « code ASCII en Java [urgent] » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?