Bonjour, je souhaire convertir un int en val. hexa, comment peut on faire ça sans utiliser "0x__" ?
Tu veux dire *afficher* un int en hexa ? %x ?
Marc Boyer -- Lying for having sex or lying for making war? Trust US presidents :-(
Pierre Maurette
"Chat" a écrit ...
Bonjour, je souhaire convertir un int en val. hexa, comment peut on faire ça sans utiliser "0x__" ? thanks Que souhaitez-vous faire exactement?
En C, une "val. hexa" est soit une chaîne de caractère, soit une façon d'écrire un constante numérique. Dans le premier cas, sprintf() pour obtenir la chaîne. Dans le second, 0x.... pour saisir directement une valeur en l'exprimant en hexadécimal. Troisième hypothèse, on vous a demandé à l'école d'écrire un IntToHex(). Pierre
"Chat" <chat@nospam.com> a écrit ...
Bonjour,
je souhaire convertir un int en val. hexa, comment peut on faire ça sans
utiliser "0x__" ?
thanks
Que souhaitez-vous faire exactement?
En C, une "val. hexa" est soit une chaîne de caractère, soit une façon
d'écrire un constante numérique. Dans le premier cas, sprintf() pour obtenir
la chaîne. Dans le second, 0x.... pour saisir directement une valeur en
l'exprimant en hexadécimal.
Troisième hypothèse, on vous a demandé à l'école d'écrire un IntToHex().
Pierre
Bonjour, je souhaire convertir un int en val. hexa, comment peut on faire ça sans utiliser "0x__" ? thanks Que souhaitez-vous faire exactement?
En C, une "val. hexa" est soit une chaîne de caractère, soit une façon d'écrire un constante numérique. Dans le premier cas, sprintf() pour obtenir la chaîne. Dans le second, 0x.... pour saisir directement une valeur en l'exprimant en hexadécimal. Troisième hypothèse, on vous a demandé à l'école d'écrire un IntToHex(). Pierre
Chat
Pierre Maurette wrote:
"Chat" a écrit ...
Bonjour, je souhaire convertir un int en val. hexa, comment peut on faire ça sans utiliser "0x__" ? thanks
Que souhaitez-vous faire exactement? En C, une "val. hexa" est soit une chaîne de caractère, soit une façon d'écrire un constante numérique. Dans le premier cas, sprintf() pour obtenir la chaîne. Dans le second, 0x.... pour saisir directement une valeur en l'exprimant en hexadécimal. Troisième hypothèse, on vous a demandé à l'école d'écrire un IntToHex(). Pierre
mon cas correspond au second que vous decrivez, je veux utiliser une
valeur hexa pour envoyer une commande sur le port serie. Le pb c que la valeur a envoyer en utilisant 0x__ est un char qui est recuperé par une fonction native java, donc pour resumer, j'ai une fonction qui dans son proto a unsigned char , et je dois lui balancer qq chose du style 0x__ et de l'autre coté j'ai un char. donc je voudrais faire une sorte de concatenation 0x+monChar ou transformer ce char en val hexa. je sais pas si je suis clair.
Pierre Maurette wrote:
"Chat" <chat@nospam.com> a écrit ...
Bonjour,
je souhaire convertir un int en val. hexa, comment peut on faire ça sans
utiliser "0x__" ?
thanks
Que souhaitez-vous faire exactement?
En C, une "val. hexa" est soit une chaîne de caractère, soit une façon
d'écrire un constante numérique. Dans le premier cas, sprintf() pour obtenir
la chaîne. Dans le second, 0x.... pour saisir directement une valeur en
l'exprimant en hexadécimal.
Troisième hypothèse, on vous a demandé à l'école d'écrire un IntToHex().
Pierre
mon cas correspond au second que vous decrivez, je veux utiliser une
valeur hexa pour envoyer une commande sur le port serie.
Le pb c que la valeur a envoyer en utilisant 0x__ est un char qui est
recuperé par une fonction native java, donc pour resumer,
j'ai une fonction qui dans son proto a unsigned char , et je dois lui
balancer qq chose du style 0x__ et de l'autre coté j'ai un char.
donc je voudrais faire une sorte de concatenation 0x+monChar
ou transformer ce char en val hexa.
je sais pas si je suis clair.
Bonjour, je souhaire convertir un int en val. hexa, comment peut on faire ça sans utiliser "0x__" ? thanks
Que souhaitez-vous faire exactement? En C, une "val. hexa" est soit une chaîne de caractère, soit une façon d'écrire un constante numérique. Dans le premier cas, sprintf() pour obtenir la chaîne. Dans le second, 0x.... pour saisir directement une valeur en l'exprimant en hexadécimal. Troisième hypothèse, on vous a demandé à l'école d'écrire un IntToHex(). Pierre
mon cas correspond au second que vous decrivez, je veux utiliser une
valeur hexa pour envoyer une commande sur le port serie. Le pb c que la valeur a envoyer en utilisant 0x__ est un char qui est recuperé par une fonction native java, donc pour resumer, j'ai une fonction qui dans son proto a unsigned char , et je dois lui balancer qq chose du style 0x__ et de l'autre coté j'ai un char. donc je voudrais faire une sorte de concatenation 0x+monChar ou transformer ce char en val hexa. je sais pas si je suis clair.
Antoine Leca
Chat va escriure:
je souhaire convertir un int en val. hexa, comment peut on faire ça sans utiliser "0x__" ?
sprintf( "%x"
(cela devrait être dans la FAQ, selon mes souvenirs de clc)
Antoine
Chat va escriure:
je souhaire convertir un int en val. hexa, comment peut on faire ça
sans utiliser "0x__" ?
sprintf( "%x"
(cela devrait être dans la FAQ, selon mes souvenirs de clc)
je souhaire convertir un int en val. hexa, comment peut on faire ça sans utiliser "0x__" ?
Cette question n'est pas claire. Un 'int' a une représentation interne binaire. Que veux-tu faire exactement?
-- -ed- [remove YOURBRA before answering me] The C-language FAQ: http://www.eskimo.com/~scs/C-faq/top.html C-reference: http://www.dinkumware.com/manuals/reader.aspx?lib=cpp FAQ de f.c.l.c : http://www.isty-info.uvsq.fr/~rumeau/fclc/
Emmanuel Delahaye
In 'fr.comp.lang.c', Chat wrote:
je veux utiliser une valeur hexa pour envoyer une commande sur le port serie. Le pb c que la valeur a envoyer en utilisant 0x__ est un char qui est recuperé par une fonction native java, donc pour resumer, j'ai une fonction qui dans son proto a unsigned char , et je dois lui balancer qq chose du style 0x__ et de l'autre coté j'ai un char. donc je voudrais faire une sorte de concatenation 0x+monChar ou transformer ce char en val hexa. je sais pas si je suis clair.
Pour saisir la chaine : fgets()
Pour convertir la chaine hexa, deux solutions :
- strtoul() avec la base 0. Il faut alors saisir 0x.... 0x80 0xAA
- strtoul() avec la base 16 Il faut alors saisir en hexa directement : 80 AA
Pour concatener "0x" avec une chaine hexa: sprintf() :
unsigned val = 0x85; char s[10];
sprintf (s, "0x%02X", val); /* -> "0x85" */
-- -ed- [remove YOURBRA before answering me] The C-language FAQ: http://www.eskimo.com/~scs/C-faq/top.html C-reference: http://www.dinkumware.com/manuals/reader.aspx?lib=cpp FAQ de f.c.l.c : http://www.isty-info.uvsq.fr/~rumeau/fclc/
In 'fr.comp.lang.c', Chat <chat@nospam.com> wrote:
je veux utiliser une
valeur hexa pour envoyer une commande sur le port serie.
Le pb c que la valeur a envoyer en utilisant 0x__ est un char qui est
recuperé par une fonction native java, donc pour resumer,
j'ai une fonction qui dans son proto a unsigned char , et je dois lui
balancer qq chose du style 0x__ et de l'autre coté j'ai un char.
donc je voudrais faire une sorte de concatenation 0x+monChar
ou transformer ce char en val hexa.
je sais pas si je suis clair.
Pour saisir la chaine : fgets()
Pour convertir la chaine hexa, deux solutions :
- strtoul() avec la base 0. Il faut alors saisir 0x....
0x80
0xAA
- strtoul() avec la base 16 Il faut alors saisir en hexa directement :
80
AA
Pour concatener "0x" avec une chaine hexa: sprintf() :
unsigned val = 0x85;
char s[10];
sprintf (s, "0x%02X", val); /* -> "0x85" */
--
-ed- emdelYOURBRA@noos.fr [remove YOURBRA before answering me]
The C-language FAQ: http://www.eskimo.com/~scs/C-faq/top.html
C-reference: http://www.dinkumware.com/manuals/reader.aspx?lib=cpp
FAQ de f.c.l.c : http://www.isty-info.uvsq.fr/~rumeau/fclc/
je veux utiliser une valeur hexa pour envoyer une commande sur le port serie. Le pb c que la valeur a envoyer en utilisant 0x__ est un char qui est recuperé par une fonction native java, donc pour resumer, j'ai une fonction qui dans son proto a unsigned char , et je dois lui balancer qq chose du style 0x__ et de l'autre coté j'ai un char. donc je voudrais faire une sorte de concatenation 0x+monChar ou transformer ce char en val hexa. je sais pas si je suis clair.
Pour saisir la chaine : fgets()
Pour convertir la chaine hexa, deux solutions :
- strtoul() avec la base 0. Il faut alors saisir 0x.... 0x80 0xAA
- strtoul() avec la base 16 Il faut alors saisir en hexa directement : 80 AA
Pour concatener "0x" avec une chaine hexa: sprintf() :
unsigned val = 0x85; char s[10];
sprintf (s, "0x%02X", val); /* -> "0x85" */
-- -ed- [remove YOURBRA before answering me] The C-language FAQ: http://www.eskimo.com/~scs/C-faq/top.html C-reference: http://www.dinkumware.com/manuals/reader.aspx?lib=cpp FAQ de f.c.l.c : http://www.isty-info.uvsq.fr/~rumeau/fclc/
Moi
Dans l'article <404621e1$0$28121$ écrivait :
mon cas correspond au second que vous decrivez, je veux utiliser une valeur hexa pour envoyer une commande sur le port serie.
Ben je fais ça aussi quand j'envois des "bytes" (unsigned char) sur mon bus I2C bricolé sur port série. Je ne me suis jamais posé la question "conversion". Si mon périf est à l'adresse 64 ou 0x40 je vois pas la différence. Si je doit envoyer un 255 ou 0xff à l'adresse du périf je vois pas où est la différence.
Dans l'article <404621e1$0$28121$636a15ce@news.free.fr>
chat@nospam.com écrivait :
mon cas correspond au second que vous decrivez, je veux utiliser une
valeur hexa pour envoyer une commande sur le port serie.
Ben je fais ça aussi quand j'envois des "bytes" (unsigned char)
sur mon bus I2C bricolé sur port série.
Je ne me suis jamais posé la question "conversion".
Si mon périf est à l'adresse 64 ou 0x40 je vois pas la différence.
Si je doit envoyer un 255 ou 0xff à l'adresse du périf je vois pas
où est la différence.
mon cas correspond au second que vous decrivez, je veux utiliser une valeur hexa pour envoyer une commande sur le port serie.
Ben je fais ça aussi quand j'envois des "bytes" (unsigned char) sur mon bus I2C bricolé sur port série. Je ne me suis jamais posé la question "conversion". Si mon périf est à l'adresse 64 ou 0x40 je vois pas la différence. Si je doit envoyer un 255 ou 0xff à l'adresse du périf je vois pas où est la différence.
mon cas correspond au second que vous decrivez, je veux utiliser une valeur hexa pour envoyer une commande sur le port serie. Le pb c que la valeur a envoyer en utilisant 0x__ est un char qui est recuperé par une fonction native java, donc pour resumer, j'ai une fonction qui dans son proto a unsigned char , et je dois lui balancer qq chose du style 0x__ et de l'autre coté j'ai un char. donc je voudrais faire une sorte de concatenation 0x+monChar ou transformer ce char en val hexa. je sais pas si je suis clair. Je crains que non.
J'imagine que vous avez un char (de Java) sous Java et que vous disposez d'une fonction en C qui attend un unsigned char (de C) puis se charge de l'envoyer sur le port série. Je ne connais pas Java, en tous cas pas la pratique de l'API JNI. Néanmoins, je remarque que le type char en Java est 16 bits non signé. Il voyagera sous ce format pour arriver à la routine C comme un jchar (#include <jni.h>, j'imagine). Donc, soit vous travaillez (si c'est possible) sur votre code Java pour envoyer un byte (8 bits signés), soit vous modifiez le prototype de la fonction C et vous vous débrouillez pour convertir ou caster le jchar (16 bits non signé) en unsigned char (8 bits). Mais j'ai peut-être mal compris votre demande, puisque je ne vois pas d'hexadécimal ni de 0x... dans toput ça. Pierre
"Chat" <chat@nospam.com> a écrit ...
[...]
mon cas correspond au second que vous decrivez, je veux utiliser une
valeur hexa pour envoyer une commande sur le port serie.
Le pb c que la valeur a envoyer en utilisant 0x__ est un char qui est
recuperé par une fonction native java, donc pour resumer,
j'ai une fonction qui dans son proto a unsigned char , et je dois lui
balancer qq chose du style 0x__ et de l'autre coté j'ai un char.
donc je voudrais faire une sorte de concatenation 0x+monChar
ou transformer ce char en val hexa.
je sais pas si je suis clair.
Je crains que non.
J'imagine que vous avez un char (de Java) sous Java et que vous disposez
d'une fonction en C qui attend un unsigned char (de C) puis se charge de
l'envoyer sur le port série.
Je ne connais pas Java, en tous cas pas la pratique de l'API JNI. Néanmoins,
je remarque que le type char en Java est 16 bits non signé. Il voyagera sous
ce format pour arriver à la routine C comme un jchar (#include <jni.h>,
j'imagine).
Donc, soit vous travaillez (si c'est possible) sur votre code Java pour
envoyer un byte (8 bits signés), soit vous modifiez le prototype de la
fonction C et vous vous débrouillez pour convertir ou caster le jchar (16
bits non signé) en unsigned char (8 bits).
Mais j'ai peut-être mal compris votre demande, puisque je ne vois pas
d'hexadécimal ni de 0x... dans toput ça.
Pierre
mon cas correspond au second que vous decrivez, je veux utiliser une valeur hexa pour envoyer une commande sur le port serie. Le pb c que la valeur a envoyer en utilisant 0x__ est un char qui est recuperé par une fonction native java, donc pour resumer, j'ai une fonction qui dans son proto a unsigned char , et je dois lui balancer qq chose du style 0x__ et de l'autre coté j'ai un char. donc je voudrais faire une sorte de concatenation 0x+monChar ou transformer ce char en val hexa. je sais pas si je suis clair. Je crains que non.
J'imagine que vous avez un char (de Java) sous Java et que vous disposez d'une fonction en C qui attend un unsigned char (de C) puis se charge de l'envoyer sur le port série. Je ne connais pas Java, en tous cas pas la pratique de l'API JNI. Néanmoins, je remarque que le type char en Java est 16 bits non signé. Il voyagera sous ce format pour arriver à la routine C comme un jchar (#include <jni.h>, j'imagine). Donc, soit vous travaillez (si c'est possible) sur votre code Java pour envoyer un byte (8 bits signés), soit vous modifiez le prototype de la fonction C et vous vous débrouillez pour convertir ou caster le jchar (16 bits non signé) en unsigned char (8 bits). Mais j'ai peut-être mal compris votre demande, puisque je ne vois pas d'hexadécimal ni de 0x... dans toput ça. Pierre
Chat
Pierre Maurette wrote:
"Chat" a écrit ... [...]
mon cas correspond au second que vous decrivez, je veux utiliser une valeur hexa pour envoyer une commande sur le port serie. Le pb c que la valeur a envoyer en utilisant 0x__ est un char qui est recuperé par une fonction native java, donc pour resumer, j'ai une fonction qui dans son proto a unsigned char , et je dois lui balancer qq chose du style 0x__ et de l'autre coté j'ai un char. donc je voudrais faire une sorte de concatenation 0x+monChar ou transformer ce char en val hexa. je sais pas si je suis clair.
Je crains que non. J'imagine que vous avez un char (de Java) sous Java et que vous disposez d'une fonction en C qui attend un unsigned char (de C) puis se charge de l'envoyer sur le port série. Je ne connais pas Java, en tous cas pas la pratique de l'API JNI. Néanmoins, je remarque que le type char en Java est 16 bits non signé. Il voyagera sous ce format pour arriver à la routine C comme un jchar (#include <jni.h>, j'imagine). Donc, soit vous travaillez (si c'est possible) sur votre code Java pour envoyer un byte (8 bits signés), soit vous modifiez le prototype de la fonction C et vous vous débrouillez pour convertir ou caster le jchar (16 bits non signé) en unsigned char (8 bits). Mais j'ai peut-être mal compris votre demande, puisque je ne vois pas d'hexadécimal ni de 0x... dans toput ça. Pierre
oui merci ça reponds tout a fait a ma question, l'ennui c que j'ai
vraimment du mal avec ces convertions de type, ou est que vous avez trouvé les correspondances de type entre Java ET JNI et C, prasque je verifie pas systemetiquement mes types, des fois j'ai des variables qui se baladent de java-->JNI-->C-->java et fatalement des fois ça plante Dans la doc JNI ils donnent les "correspondances" JNI et JAVA mais ça se complique quand une varaible type jchar va se balader du coté d'une fonction C normale.
Pierre Maurette wrote:
"Chat" <chat@nospam.com> a écrit ...
[...]
mon cas correspond au second que vous decrivez, je veux utiliser une
valeur hexa pour envoyer une commande sur le port serie.
Le pb c que la valeur a envoyer en utilisant 0x__ est un char qui est
recuperé par une fonction native java, donc pour resumer,
j'ai une fonction qui dans son proto a unsigned char , et je dois lui
balancer qq chose du style 0x__ et de l'autre coté j'ai un char.
donc je voudrais faire une sorte de concatenation 0x+monChar
ou transformer ce char en val hexa.
je sais pas si je suis clair.
Je crains que non.
J'imagine que vous avez un char (de Java) sous Java et que vous disposez
d'une fonction en C qui attend un unsigned char (de C) puis se charge de
l'envoyer sur le port série.
Je ne connais pas Java, en tous cas pas la pratique de l'API JNI. Néanmoins,
je remarque que le type char en Java est 16 bits non signé. Il voyagera sous
ce format pour arriver à la routine C comme un jchar (#include <jni.h>,
j'imagine).
Donc, soit vous travaillez (si c'est possible) sur votre code Java pour
envoyer un byte (8 bits signés), soit vous modifiez le prototype de la
fonction C et vous vous débrouillez pour convertir ou caster le jchar (16
bits non signé) en unsigned char (8 bits).
Mais j'ai peut-être mal compris votre demande, puisque je ne vois pas
d'hexadécimal ni de 0x... dans toput ça.
Pierre
oui merci ça reponds tout a fait a ma question, l'ennui c que j'ai
vraimment du mal avec ces convertions de type, ou est que vous avez
trouvé les correspondances de type entre Java ET JNI et C, prasque je
verifie pas systemetiquement mes types, des fois j'ai des variables qui
se baladent de java-->JNI-->C-->java et fatalement des fois ça plante
Dans la doc JNI ils donnent les "correspondances" JNI et JAVA mais ça se
complique quand une varaible type jchar va se balader du coté d'une
fonction C normale.
mon cas correspond au second que vous decrivez, je veux utiliser une valeur hexa pour envoyer une commande sur le port serie. Le pb c que la valeur a envoyer en utilisant 0x__ est un char qui est recuperé par une fonction native java, donc pour resumer, j'ai une fonction qui dans son proto a unsigned char , et je dois lui balancer qq chose du style 0x__ et de l'autre coté j'ai un char. donc je voudrais faire une sorte de concatenation 0x+monChar ou transformer ce char en val hexa. je sais pas si je suis clair.
Je crains que non. J'imagine que vous avez un char (de Java) sous Java et que vous disposez d'une fonction en C qui attend un unsigned char (de C) puis se charge de l'envoyer sur le port série. Je ne connais pas Java, en tous cas pas la pratique de l'API JNI. Néanmoins, je remarque que le type char en Java est 16 bits non signé. Il voyagera sous ce format pour arriver à la routine C comme un jchar (#include <jni.h>, j'imagine). Donc, soit vous travaillez (si c'est possible) sur votre code Java pour envoyer un byte (8 bits signés), soit vous modifiez le prototype de la fonction C et vous vous débrouillez pour convertir ou caster le jchar (16 bits non signé) en unsigned char (8 bits). Mais j'ai peut-être mal compris votre demande, puisque je ne vois pas d'hexadécimal ni de 0x... dans toput ça. Pierre
oui merci ça reponds tout a fait a ma question, l'ennui c que j'ai
vraimment du mal avec ces convertions de type, ou est que vous avez trouvé les correspondances de type entre Java ET JNI et C, prasque je verifie pas systemetiquement mes types, des fois j'ai des variables qui se baladent de java-->JNI-->C-->java et fatalement des fois ça plante Dans la doc JNI ils donnent les "correspondances" JNI et JAVA mais ça se complique quand une varaible type jchar va se balader du coté d'une fonction C normale.
Pierre Maurette
"Chat" a écrit ... [...]
oui merci ça reponds tout a fait a ma question, l'ennui c que j'ai vraimment du mal avec ces convertions de type, ou est que vous avez trouvé les correspondances de type entre Java ET JNI et C, Revue "Login:" de novembre 2003.
prasque je verifie pas systemetiquement mes types, des fois j'ai des variables qui se baladent de java-->JNI-->C-->java et fatalement des fois ça plante Dans la doc JNI ils donnent les "correspondances" JNI et JAVA mais ça se complique quand une varaible type jchar va se balader du coté d'une fonction C normale.
Les j-types (jchar, jboolean, jint, etc.) sont physiquement définis (nombre exact de bits et signé/non signé). Les types de C ne le sont pas. La correspondance dépend donc de l'implémentation. J'imagine que vous incluez <jni.h>, vous pouvez donc utiliser directement les types JNI. Vous pouvez d'ailleurs consulter ce fichier <jni.h>. Personnellement (coté C), je commencerais par modifier ma fonction. Si le paramètre est un unsigned char, ce n'est pas un caractère. Dans l'esprit, c'est un octet que vous expédiez à la sortie série. Donc: Typedef unsigned char _uint8; /* ou byte, ubyte, octet, etc. */
A vous de voir ensuite si par exemple le type char de Java, et donc jchar, se prête à :
(Google est certainement très généreux sur le sujet)
Pierre
"Chat" <chat@nospam.com> a écrit ...
[...]
oui merci ça reponds tout a fait a ma question, l'ennui c que j'ai
vraimment du mal avec ces convertions de type, ou est que vous avez
trouvé les correspondances de type entre Java ET JNI et C,
Revue "Login:" de novembre 2003.
prasque je
verifie pas systemetiquement mes types, des fois j'ai des variables qui
se baladent de java-->JNI-->C-->java et fatalement des fois ça plante
Dans la doc JNI ils donnent les "correspondances" JNI et JAVA mais ça se
complique quand une varaible type jchar va se balader du coté d'une
fonction C normale.
Les j-types (jchar, jboolean, jint, etc.) sont physiquement définis (nombre
exact de bits et signé/non signé). Les types de C ne le sont pas. La
correspondance dépend donc de l'implémentation. J'imagine que vous incluez
<jni.h>, vous pouvez donc utiliser directement les types JNI. Vous pouvez
d'ailleurs consulter ce fichier <jni.h>.
Personnellement (coté C), je commencerais par modifier ma fonction. Si le
paramètre est un unsigned char, ce n'est pas un caractère. Dans l'esprit,
c'est un octet que vous expédiez à la sortie série. Donc:
Typedef unsigned char _uint8; /* ou byte, ubyte, octet, etc. */
A vous de voir ensuite si par exemple le type char de Java, et donc jchar,
se prête à :
oui merci ça reponds tout a fait a ma question, l'ennui c que j'ai vraimment du mal avec ces convertions de type, ou est que vous avez trouvé les correspondances de type entre Java ET JNI et C, Revue "Login:" de novembre 2003.
prasque je verifie pas systemetiquement mes types, des fois j'ai des variables qui se baladent de java-->JNI-->C-->java et fatalement des fois ça plante Dans la doc JNI ils donnent les "correspondances" JNI et JAVA mais ça se complique quand une varaible type jchar va se balader du coté d'une fonction C normale.
Les j-types (jchar, jboolean, jint, etc.) sont physiquement définis (nombre exact de bits et signé/non signé). Les types de C ne le sont pas. La correspondance dépend donc de l'implémentation. J'imagine que vous incluez <jni.h>, vous pouvez donc utiliser directement les types JNI. Vous pouvez d'ailleurs consulter ce fichier <jni.h>. Personnellement (coté C), je commencerais par modifier ma fonction. Si le paramètre est un unsigned char, ce n'est pas un caractère. Dans l'esprit, c'est un octet que vous expédiez à la sortie série. Donc: Typedef unsigned char _uint8; /* ou byte, ubyte, octet, etc. */
A vous de voir ensuite si par exemple le type char de Java, et donc jchar, se prête à :