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

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

5 ответов


предполагая, что вы просто хотите низкие байты:

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

однако, так как " int "является " Int32", что оставляет еще 2 байта не захваченными.


можно использовать метода bitconverter.Метод getbytes чтобы получить байты, содержащие Int32. Однако в результате будет 4 байта, а не 2.


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

Int32 i = 38633;
byte b0 = (byte)(i % 256);
byte b1 = (byte)(i / 256);

это int16?

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

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


Вариант 1:

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

Вариант 2:

byte[] buffer = new byte[2];

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

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