Problème de cast [Résolu]

Leucistic 61 Messages postés mercredi 24 septembre 2008Date d'inscription 16 juin 2012 Dernière intervention - 12 août 2008 à 16:13 - Dernière réponse : Leucistic 61 Messages postés mercredi 24 septembre 2008Date d'inscription 16 juin 2012 Dernière intervention
- 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
Afficher la suite 

Votre réponse

5 réponses

Meilleure réponse
leprov 1163 Messages postés vendredi 23 juillet 2004Date d'inscription 21 octobre 2010 Dernière intervention - 12 août 2008 à 17:43
3
Merci
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;

Merci leprov 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 119 internautes ce mois-ci

Commenter la réponse de leprov
ikaer 42 Messages postés lundi 14 janvier 2008Date d'inscription 23 septembre 2008 Dernière intervention - 12 août 2008 à 16:23
0
Merci
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.
Commenter la réponse de ikaer
Leucistic 61 Messages postés mercredi 24 septembre 2008Date d'inscription 16 juin 2012 Dernière intervention - 12 août 2008 à 16:30
0
Merci
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
Commenter la réponse de Leucistic
Leucistic 61 Messages postés mercredi 24 septembre 2008Date d'inscription 16 juin 2012 Dernière intervention - 12 août 2008 à 16:47
0
Merci
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
Commenter la réponse de Leucistic
Leucistic 61 Messages postés mercredi 24 septembre 2008Date d'inscription 16 juin 2012 Dernière intervention - 13 août 2008 à 10:06
0
Merci
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
Commenter la réponse de Leucistic

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.