7
votes

Convertissez un Int Int Int Int Int Int Int Int In int Int dans C #

J'écris un analyseur de données pour un contrôleur de robot et qu'en vient du journal des données est un nombre compris entre 0 et 65535 (qui est un entier non signé de 16 bits si je ne me trompe pas). J'essaie de convertir cela en un entier de 16 bits signé pour afficher à l'utilisateur (puisque c'était le type de données réel avant que l'enregistreur ne le change).

Quelqu'un peut-il me donner une main?

Exemple:

quelles sont les valeurs (0, -1, -2, -3, -4)

Quelles sont les valeurs (0, 65535, 65534, 65533, 65532)


0 commentaires

3 Réponses :


13
votes

Avez-vous essayé de moulage explicite? XXX


1 commentaires

Va crash si [x] vérifie le débordement arithmétique est activé.



-3
votes

ou comme ça

 ou comme ça

Vérifier simplement si ui16> 32767 si oui, i16 = ui16-65536 , sinon = ui16


0 commentaires

1
votes

Utilisation non cochéra code> Ici évite ici un crash si [x] vérifie le débordement arithmétique code> est activé:

UInt16 x = 65535;
Int16 y = unchecked((Int16)x);


0 commentaires