2010-06-11 8 views
3

Je programme en C#. J'ai une variable sbyte. Dites qu'il contient -10 qui est en binaire 11110110. Je veux stocker la représentation binaire de cette valeur dans une variable octet. Donc, quand je copie le sbyte (-10) à l'octet la valeur des octets serait 245. Si j'essaie d'utiliser Convert.ToByte (sbyte), il émet une exception qui a du sens. Je ne veux vraiment pas passer d'un type à l'autre mais plutôt faire une copie au format bit. Comment puis-je faire cela?Comment puis-je stocker une valeur sbyte dans une variable byte?

+0

La curiosité me pousse à demander, Pourquoi la variable est-elle un sbyte? Qu'est-ce que ça tient? –

+0

Eh bien, la valeur est envoyée via un bus USB à un périphérique. L'outil que j'utilise pour envoyer des données ne prend que des tableaux d'octets. Le micrologiciel de l'appareil saura interpréter cet octet particulier comme un octet signé de l'autre côté. – PICyourBrain

Répondre

10

Juste fonte:

byte b = (byte) x; 

Si votre code est normalement en cours d'exécution dans un contexte contrôlé, vous aurez envie de faire cette opération sans contrôle:

byte b = unchecked((byte) x); 

Notez que -10 deviendra 246, pas 245.

2

il suffit de le lancer:

byte b = 130; 
sbyte a = (sbyte)b; 
byte c = (byte)a; // will still be 130