bubbathemaster
Messages postés339Date d'inscriptiondimanche 26 janvier 2003StatutMembreDernière intervention25 mars 2009
-
14 nov. 2008 à 22:47
WishhhMaster
Messages postés327Date d'inscriptionmardi 17 février 2004StatutMembreDernière intervention10 avril 2010
-
14 nov. 2008 à 23:40
Bonjour,
J'ai un problème un peu bete:
Je veux mettre 4 bytes (donc 8bits non signés) dans un uint (32 bits non signé).
Ca me parait donc normal de faire:
uint i = 0x00000000;
byte a,b,c,d; //valeurs quelquonques
i = (a << 24) | (b << 16) | (c << 8) | (d);
Et là paf:
Cannot implicitly convert type 'int' to 'uint'. An explicit conversion exists (are you missing a cast?). Gné?? Je manipule que des unsigned il est où le probleme?
WishhhMaster
Messages postés327Date d'inscriptionmardi 17 février 2004StatutMembreDernière intervention10 avril 20108 14 nov. 2008 à 23:40
Salut,
Je pense que c'est parce que a, b, c et d sont convertis en int.
Les opérateur prédéfinis pour le décalage de bits sont:
int operator <<(int x, int count);
uint operator <<(uint x, int count);
long operator <<(long x, int count);
ulong operator <<(ulong x, int count);
Comme tu vois, pas de byte, donc tes bytes sont convertis en ce qu'il y a de plus proche, un int
"Les opérandes sont convertis vers les types de paramètres de
l'opérateur sélectionné et le type du résultat correspond au type de
retour de l'opérateur."