Problème de cast

Résolu
Leucistic Messages postés 61 Date d'inscription mercredi 24 septembre 2008 Statut Membre Dernière intervention 16 juin 2012 - 12 août 2008 à 16:13
Leucistic Messages postés 61 Date d'inscription mercredi 24 septembre 2008 Statut Membre Dernière intervention 16 juin 2012 - 13 août 2008 à 10:06
Bonjour,

Voici le bout de code où ce qui est en rouge génère l'erreur suivante :
Impossible de convertir implicitement le type 'int' en 'byte'. Une conversion explicite existe (un cast est-il manquant ?) (CS0266)

byte byteCount = 0x05;
byte level = byte.Parse(tLevel.Text);
byte source = byte.Parse(tSource.Text);
byte dest = byte.Parse(tDest.Text);
byte sd = (byte)source << 1 + dest;
                    
byte checkSum = (0xFF - (0x31+level+0x01+0x20+source+dest) - byteCount) + 0x01;


L'ouverture de l'esprit n'est pas une fracture du crâne

5 réponses

leprov Messages postés 1160 Date d'inscription vendredi 23 juillet 2004 Statut Membre Dernière intervention 21 octobre 2010 17
12 août 2008 à 17:43
tous les nombres litéraux dans le code sont considérés comme int. il aurait fallu que tu fasse
byte sd = (byte)source << (byte)1 + dest;
3
ikaer Messages postés 42 Date d'inscription lundi 14 janvier 2008 Statut Membre Dernière intervention 23 septembre 2008
12 août 2008 à 16:23
byte sd = byte.Parse((source << 1 + dest).ToString());

byte checkSum = byte.Parse(((0xFF - (0x31 + level + 0x01 + 0x20 + source + dest) - byteCount) + 0x01).ToString());

c'est pas beau mais ça marche chez moi ça.
0
Leucistic Messages postés 61 Date d'inscription mercredi 24 septembre 2008 Statut Membre Dernière intervention 16 juin 2012 1
12 août 2008 à 16:30
byte byteCount = 0x05;
byte level = byte.Parse(tLevel.Text);
byte source = byte.Parse(tSource.Text);
byte dest = byte.Parse(tDest.Text);

byte sd = (byte)(source<<1 | dest);
                   
byte checkSum = (byte)(0xFF - (0x31+level+0x01+0x20+sd) - byteCount + 0x01);

Voila ce que j'ai fait, je n'ai plus d'erreur à la compilation mais alors de là à ce que ce soit bon ...

Personne n'a une idée de pourquoi cette erreur est générée alors que je n'opère qu'avec des byte ?
L'ouverture de l'esprit n'est pas une fracture du crâne
0
Leucistic Messages postés 61 Date d'inscription mercredi 24 septembre 2008 Statut Membre Dernière intervention 16 juin 2012 1
12 août 2008 à 16:47
Bon après quelques tests, un première erreur est que pour sd, il faut décaler de 4 et non pas de 1.

Maintenant le problème est que tout va bien tant que je rentre un chiffre dans mes textBox, en revanche, si je rentre 10 ou plus, il voit sa comme 0x10, or je voudrais qu'il voit 10, ou alors 0x0A.

L'ouverture de l'esprit n'est pas une fracture du crâne
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Leucistic Messages postés 61 Date d'inscription mercredi 24 septembre 2008 Statut Membre Dernière intervention 16 juin 2012 1
13 août 2008 à 10:06
Merci.

Sinon personne ne sait comment résoudre se problème d'interpretation de byte.Parse qui me renvoie 0x10 au lieu de 0x0A ?

L'ouverture de l'esprit n'est pas une fracture du crâne
0
Rejoignez-nous