bonjour tous,
je veux faire un programme java qui reçoit des caractere de type "unsigned char" (en c).
mon probleme et que le caractere reçu est transfermé en int.
aucune idée?
bonjour tous,
je veux faire un programme java qui reçoit des caractere de type "unsigned char" (en c).
mon probleme et que le caractere reçu est transfermé en int.
aucune idée?
montre nous ton code
Pour chaque langage existe une faq / N'oubliez pas de lire les règles du forum
je travaille sur une camera qui m'envoie des caracteres hexadecimaux;
Avec l'API javax.comm j'arrive a lires les caracteres et les sauvegarder dans un fichier mais le probleme et que les données sont fausses suite a la reception du java.
pour le code c'est un thread qui s'occupe de l'ecoute
la lecture est faite par
int L=bufRead.read();
je pense pas que c'est faux, t'es juste en base 10 avec ton int tu crois pas?
Pour chaque langage existe une faq / N'oubliez pas de lire les règles du forum
merci pour vous,
mais le code d'hoffman de debut de de l'image est juste ceci m'etonne.
sauf que chaque marker de type 0x81 est transformé en 0x3f.
je verifie la transformation et je vous repond.
désoléEnvoyé par tun07
Pour chaque langage existe une faq / N'oubliez pas de lire les règles du forum
j'ai pris un photo :les caracteres faux sont tous transformés en 0x3f (111111 en binaire) ce qui fait penser au signe ou au promotion!!!!
peut etre je suis a coté de la plaque mais cest normal pour un debutant en java.
tu peux montrer ton code (en entier) qui lit les données?
Pour chaque langage existe une faq / N'oubliez pas de lire les règles du forum
/*on recoit la taille de l'image puis les données
la taille est sur 2 caractere pour mon code c(dans la partie embarqué) c'est sont 2 unsigned char */
public void run(){
int i=0;
try{
BufferedWriter out = new BufferedWriter(new FileWriter("./java.jpg"));
int H=bufRead.read();
int L=bufRead.read();
int count=H*256+L;//la taille est 0xHL
while (true){
try{
out.write(bufRead.read());
out.flush();
i++;
if(i>=count) break;
}catch(Exception ee){
ee.printStackTrace();
}
}
out.close();
System.out.println("Cest bon");
}catch(Exception e){
e.printStackTrace();
}
}
}
quelque chose a ajouter?
ton bufRead est de quel type?
Pour rappel, les BufferedReader/Writer sont utilisés pour lire/écrire les données de type caractères alors que les BufferedInputStream/OutputStream sont utilisés pour lire/écrire des données de type binaires
Pour chaque langage existe une faq / N'oubliez pas de lire les règles du forum
Bonjour,
je suppose que ton problème se situe dans la conversion "unsigned".
Pour rappel, en Java, les types sont exclusivement signés, et donc pour obtenir un 'unsigned char', il faut utiliser un type tel le short.
Personnellement, lorsque j'ai à effectuer ce genre de conversions, j'utilise un code de ce genre:Ca fait très 'langage C', mais ça me convient.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 // Supposons que le unsigned char est reçu dans cette variable. int unsignedChar = stream.read(); unsignedChar = unsignedChar < 0 ? unsignedChar+256: unsignedChar;
S. Desbois
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager