Как мне преобразовать int в два байта в C #? - PullRequest
9 голосов
/ 13 октября 2010

Как мне преобразовать int в два байта в C #?

Ответы [ 5 ]

14 голосов
/ 13 октября 2010

Предполагая, что вы просто хотите младшие байты:

byte b0 = (byte)i,
     b1 = (byte)(i>>8);

Однако, поскольку 'int' - это 'Int32', остается еще 2 байта незафиксированными.

4 голосов
/ 13 октября 2010

Вы можете использовать BitConverter.GetBytes , чтобы получить байты, составляющие Int32. В результате будет 4 байта, но не 2.

2 голосов
/ 13 октября 2010

Это int16?

Int16 i = 7;
byte[] ba = BitConverter.GetBytes(i);

В нем будет только два байта.

2 голосов
/ 13 октября 2010

Еще один способ сделать это, хотя и не так гладко, как другие методы:

Int32 i = 38633;
byte b0 = (byte)(i % 256);
byte b1 = (byte)(i / 256);
0 голосов
/ 05 июня 2018

Вариант 1:

byte[] buffer = BitConverter.GetBytes(number);

Вариант 2:

byte[] buffer = new byte[2];

buffer[0] = (byte) number;
buffer[1] = (byte)(number >> 8);

Я предпочитаю вариант 1!

...