ASCII en java
Résolu
mariostar27
Messages postés
391
Date d'inscription
Statut
Membre
Dernière intervention
-
mariostar27 Messages postés 391 Date d'inscription Statut Membre Dernière intervention -
mariostar27 Messages postés 391 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
voila je dois envoyer des trames a un aficheur.
pour cela, je doit envoyé un tableau de byte ( j'ai fais : byte tab[] = new byte[255] )
mais comment transformer un string ( ou un char pour faire lettre par lettre ce qui serait plus simple ) en ASCII puis l'inserer dans ce tableau de byte?
merci d'avance
voila je dois envoyer des trames a un aficheur.
pour cela, je doit envoyé un tableau de byte ( j'ai fais : byte tab[] = new byte[255] )
mais comment transformer un string ( ou un char pour faire lettre par lettre ce qui serait plus simple ) en ASCII puis l'inserer dans ce tableau de byte?
merci d'avance
A voir également:
- ASCII en java
- Code ascii - Guide
- Waptrick java football - Télécharger - Jeux vidéo
- Jeux java itel - Télécharger - Jeux vidéo
- Eclipse java - Télécharger - Langages
- Java apk - Télécharger - Langages
9 réponses
voici mon code :
Client c = new Client();
Socket socket;
BufferedReader in;
PrintWriter out;
try {
String str = "texte à transformer";
byte tab[] = new byte[255];
socket = new Socket("192.168.0.111",2000);
System.out.println("connexion");
out = new PrintWriter(socket.getOutputStream());
out.println(tab);
out.flush();
socket.close();
Client c = new Client();
Socket socket;
BufferedReader in;
PrintWriter out;
try {
String str = "texte à transformer";
byte tab[] = new byte[255];
socket = new Socket("192.168.0.111",2000);
System.out.println("connexion");
out = new PrintWriter(socket.getOutputStream());
out.println(tab);
out.flush();
socket.close();
Bonjour,
Alors c'est plutôt simple dans ton cas, il te suffit d'invoquer la méthode 'getBytes' sur ta chaine de caractère de la façon suivante:
Ceci te permet alors de te dégager de ton tableau de bytes dont la longueur est fixe (quand bien même tu aurais pu coder cela de manière à le rendre dynamique).
A savoir qu'en Java, toute chaine de caractère est représenter en UTF-16 (en interne à Java).
Si à l'avenir tu travailles sur autre chose que de l'ASCII, je te conseille fortement de travailler / lire ta données via des tableaux de byte plutôt que des String.
En espérant que cela puisse t'aider.
Cdlt.
Alors c'est plutôt simple dans ton cas, il te suffit d'invoquer la méthode 'getBytes' sur ta chaine de caractère de la façon suivante:
String str = "texte à transformer"; out.println(str.getBytes());
Ceci te permet alors de te dégager de ton tableau de bytes dont la longueur est fixe (quand bien même tu aurais pu coder cela de manière à le rendre dynamique).
A savoir qu'en Java, toute chaine de caractère est représenter en UTF-16 (en interne à Java).
Si à l'avenir tu travailles sur autre chose que de l'ASCII, je te conseille fortement de travailler / lire ta données via des tableaux de byte plutôt que des String.
En espérant que cela puisse t'aider.
Cdlt.
disons que je commence seulement a voir les byte en java donc...
j'ai un projet qui consiste a envoyé des trames sur le réseau. si vous pouvez m'aidez svp.
genre j'ai une trame du genre STX 001 GS 001 GS bonjour ETX
donc je suppose que, cette chaine de caractère "bonjour" doit être transformé en un tableau de byte. comment faire pour cela ??? j'ouvre un socket a l'adresse IP et le port voulu, puis j'envoie mon tableau de byte ???
pouvez vous me donné un exemple de code svp.
j'ai un projet qui consiste a envoyé des trames sur le réseau. si vous pouvez m'aidez svp.
genre j'ai une trame du genre STX 001 GS 001 GS bonjour ETX
donc je suppose que, cette chaine de caractère "bonjour" doit être transformé en un tableau de byte. comment faire pour cela ??? j'ouvre un socket a l'adresse IP et le port voulu, puis j'envoie mon tableau de byte ???
pouvez vous me donné un exemple de code svp.
bon très bien. maintenant autre problème, celui des STX, GS, etc.
si je fais :
String str = "STX 111 GS 001 GS bonjour ETX";
byte[] tab = str.getByte();
dans mon tableau j'aurais le STX, GS et ETX transformé lettre par lettre alors que je dois avoir 0x02 pour STX et pas 0x53 0x54 0x58. enfin, tu vois mon problème.
si je fais :
String str = "STX 111 GS 001 GS bonjour ETX";
byte[] tab = str.getByte();
dans mon tableau j'aurais le STX, GS et ETX transformé lettre par lettre alors que je dois avoir 0x02 pour STX et pas 0x53 0x54 0x58. enfin, tu vois mon problème.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Non je ne vois pas du tout ton problème.
A quoi correspondent exactement les données / informations STX, 111, GS, 001 et ETX ?
Si tu me dis que tu veux avoir la valeur héxadécimale '0x02' en sortie à la place de STX, c'est donc que STX n'est pas une chaine de caractère. Qu'est-ce donc ? Est-ce que tu ne ferai pas un mélange d'autre type de code ?
Regarde par ici, des fois que ça puisse t'éclairer sur les communications:
https://www.oracle.com/java/technologies/jpl2-socket-communication.html
A quoi correspondent exactement les données / informations STX, 111, GS, 001 et ETX ?
Si tu me dis que tu veux avoir la valeur héxadécimale '0x02' en sortie à la place de STX, c'est donc que STX n'est pas une chaine de caractère. Qu'est-ce donc ? Est-ce que tu ne ferai pas un mélange d'autre type de code ?
Regarde par ici, des fois que ça puisse t'éclairer sur les communications:
https://www.oracle.com/java/technologies/jpl2-socket-communication.html
STX = start of Texte
111 = adresse de l'afficheur concerné
GS = group séparator
001 = numero du massage a affiché.
ETX = end of text.
c'est pour un afficheur. se que je vien de te donné se situe dans le tableau ascii
111 = adresse de l'afficheur concerné
GS = group séparator
001 = numero du massage a affiché.
ETX = end of text.
c'est pour un afficheur. se que je vien de te donné se situe dans le tableau ascii
j'ai éssayé ca :
byte[] tab = {0X01, 0X31, 0X31, 0X31, 0X1D, 0X30, 0X30, 0X31, 0X04};
out = new PrintWriter(socket.getOutputStream());
out.println(tab);
mais cela ne fonctionne pas.
byte[] tab = {0X01, 0X31, 0X31, 0X31, 0X1D, 0X30, 0X30, 0X31, 0X04};
out = new PrintWriter(socket.getOutputStream());
out.println(tab);
mais cela ne fonctionne pas.
j'ai changer mon code, voici :
public static void main(String[] zero) {
try {
Socket socket;
OutputStream out;
socket = new Socket("192.168.0.111", 2000);
byte[] tab = {0X01, 0X31, 0X31, 0X31, 0X1D, 0X30, 0X30, 0X31, 0X04};
System.out.println("Demande de connexion");
out = new DataOutputStream(socket.getOutputStream());
out.write(tab);
out.flush();
socket.close();
} catch (IOException ex) {
Logger.getLogger(TestAfficheur.class.getName()).log(Level.SEVERE, null, ex);
}
}
j'ai changer le printWriter en DataOutputStream. et le println en write.
avec ethereal (wireshark), j'ai regardé les trame circulant entre mon afficheur et moi (sur le port 2000).
je peux voir quelque erreur :
Transmission Control Protocol, src Port : 36590 (36590), Dst Port: cisco-sccp (2000), seq: 1, Ack: 1, Len: 9
Source port: 36590
Destination port: cisco-cssp (2000)
...
Chechsum: 0x8222 [incorrect, should be 0xdf33 (maybe caused by "TCP checksum offload"?)]
[good Checksum: false]
[bad Checksum: true]
je ne vois pas trop de quoi il parle. le saviez-vous ???
merci à toi kij_82
public static void main(String[] zero) {
try {
Socket socket;
OutputStream out;
socket = new Socket("192.168.0.111", 2000);
byte[] tab = {0X01, 0X31, 0X31, 0X31, 0X1D, 0X30, 0X30, 0X31, 0X04};
System.out.println("Demande de connexion");
out = new DataOutputStream(socket.getOutputStream());
out.write(tab);
out.flush();
socket.close();
} catch (IOException ex) {
Logger.getLogger(TestAfficheur.class.getName()).log(Level.SEVERE, null, ex);
}
}
j'ai changer le printWriter en DataOutputStream. et le println en write.
avec ethereal (wireshark), j'ai regardé les trame circulant entre mon afficheur et moi (sur le port 2000).
je peux voir quelque erreur :
Transmission Control Protocol, src Port : 36590 (36590), Dst Port: cisco-sccp (2000), seq: 1, Ack: 1, Len: 9
Source port: 36590
Destination port: cisco-cssp (2000)
...
Chechsum: 0x8222 [incorrect, should be 0xdf33 (maybe caused by "TCP checksum offload"?)]
[good Checksum: false]
[bad Checksum: true]
je ne vois pas trop de quoi il parle. le saviez-vous ???
merci à toi kij_82