Auteur de questions
traduire un programme c++ en c#

Discussion générale
-
Bonjour ,j'aimerai qu'on m'aide .J'essaye de traduire une ligne de code c++ en c# et quand je compile il me donne cette erreur "" l'opérateur'*' ne peut pas être appliqué aux opérandes de type 'bool' et 'int'.j'aimerai savoir si la traduction du code c++ en c# est bonne et comment je peux resoudre cette erreur.merci
voici la code en c++:
byte c_nbytes;
WORD w_nbits;
bool [] b_values;
byte c_msge;
if ((8*i_nbytwrt+1) < w_nbits )
c_msge[13+i] += b_values[8*i+1] * 0x02;
if ((8*i+2) < w_nbits )
c_msge[13+i] += b_values[8*i+2] * 0x04;voici le programme en c#:
int c_nbytes;
int w_nbits;
byte c_msge;
bool b_value;
for
(int iCount = 0; iCount < c_nbytes; iCount++)
if
((8 * iCount + 1) < w_nbits)
c_msge[13 + iCount] += b_value[8 * iCount + 1] * 0x02 ;
if ((8 * iCount + 2) < w_nbits)
c_msge[13 + iCount] += b_value[8 * iCount + 2] * 0x04;
- Type modifié Alex Petrescu mardi 20 avril 2010 12:07
Toutes les réponses
-
Bonjour,
Le variable c_msge est de type byte alors que l'ecriture c_msge[13 + iCount] est fausse parceque vous essayez d'utilise le meme variable comme un byte array.
b_value[8 * iCount + 1] est un boolean c'est à dire true ou false et vous l'assignez à un byte et tu le multiplie par byte !!!
Cette instruction équivalente à essayer de faire byte += bool* byte
c_msge[13 + iCount] += b_value[8 * iCount + 1] * 0x02 ;
tu peux resoudre le conflit des type par un implicit casting
c_msge[13 + iCount] += (byte)b_value[8 * iCount + 1] * 0x02 ;
Biensure, il faut aussi remplacer
byte c_msge; par
byte[] c_msge;
-
-
Bonjour,
Je pense que tu pourra obtenir plus facilement une réponse (du code c#) en expliquant directement ton problème (ce que tu veux faire) et non en demandant
la traduction du code écrit en c++.
Sinon au cas où tu veux absolument passer par ton code c++, peux tu nous donner un code qui compile et s'exécute sans problème (les variables i_nbytwr et i ne sont pas déclarées et les autres ne sont pas initialisées !!)
Cordialement.
-