From: Bruno.Zoghbi@alcatel.fr
To: java@u-strasbg.fr
Date sent: Thu, 21 Jun 2001 10:32:51 +0200
Subject: CORBA et JAVA , D'un byte vers un int
Send reply to: java@u-strasbg.fr
Bonjour,
J'utilise un bus Corba dans lequel je dois envoyer une structure définie
en C++ contenant un byte. Une fois compilé par jidl, mes idl me
fournissent bien des interfaces avec le type byte.
Malheureusement, le type meme de la donnée byte en C++ est signé. Alors
que celui de Java ne l'est pas. Alors ma première question : N'y a t il
pas un petit pb ?
J'envoie donc sur le bus une valeur comprise entre 0 et 255.
Le serveur attend quant à lui une valeur entre -128 et +127.
Ce qui fait que toute valeur comprise entre 0 et 127 est bien prise en
compte. Par contre les valeurs au dela de 128, sont transtypées en
"signed" octet.
Si j'envoie une valeur supérieure à 127, elle me sera retournée
inévitablement négative.
Alors voila ma deuxieme question :
Comment faire pour passer d'une valeur négative sur un byte
(représentant vers un une valeur supérieure à 127) vers sa vrai
valeur positive supérieure à 127 ??
Voilà, désolé de vous déranger pour si peu.
Merci
Date sent: Thu, 21 Jun 2001 12:8:50 +0200
From: Pierre GASTON <pgas@intracom.gr>
Send reply to: pgas@intracom.gr
To: "java@u-strasbg.fr" <java@u-strasbg.fr>
Subject: Re: CORBA et JAVA , D'un byte vers un int
>Alors voila ma deuxieme question :
> Comment faire pour passer d'une valeur négative sur un byte
> (représentant vers un une valeur supérieure à 127) vers sa vrai
> valeur positive supérieure à 127 ??
byte num = -244
int unsignedValue;
unsignedValue=(num[0]>=0)?num[0]:num[0]+256
en rajoutant 256 a une valeur négative tu obtiens sa vrai valeur positive
juste apres il faut la stocker dans un int
Date sent: Thu, 21 Jun 2001 12:10:21 +0200
From: Pierre GASTON <pgas@intracom.gr>
Send reply to: pgas@intracom.gr
To: "java@u-strasbg.fr" <java@u-strasbg.fr>
Subject: Re: CORBA et JAVA , D'un byte vers un int
>Alors voila ma deuxieme question :
> Comment faire pour passer d'une valeur négative sur un byte
> (représentant vers un une valeur supérieure à 127) vers sa vrai
> valeur positive supérieure à 127 ??
le num[0] du mail vient d'un copier-coller intempestif
ca marchera mieux sans le "[0]" =)
byte num = -244
int unsignedValue;
unsignedValue=(num>=0)?num:num+256
en rajoutant 256 a une valeur négative tu obtiens sa vrai valeur positive
juste apres il faut la stocker dans un int