Как мне преобразовать int в два байта в C #?
Предполагая, что вы просто хотите младшие байты:
byte b0 = (byte)i, b1 = (byte)(i>>8);
Однако, поскольку 'int' - это 'Int32', остается еще 2 байта незафиксированными.
Вы можете использовать BitConverter.GetBytes , чтобы получить байты, составляющие Int32. В результате будет 4 байта, но не 2.
Это int16?
Int16 i = 7; byte[] ba = BitConverter.GetBytes(i);
В нем будет только два байта.
Еще один способ сделать это, хотя и не так гладко, как другие методы:
Int32 i = 38633; byte b0 = (byte)(i % 256); byte b1 = (byte)(i / 256);
Вариант 1:
byte[] buffer = BitConverter.GetBytes(number);
Вариант 2:
byte[] buffer = new byte[2]; buffer[0] = (byte) number; buffer[1] = (byte)(number >> 8);
Я предпочитаю вариант 1!