Вы могли бы использовать следующие
static public byte[] ToByteArray(object anyValue, int length)
{
if (length > 0)
{
int rawsize = Marshal.SizeOf(anyValue);
IntPtr buffer = Marshal.AllocHGlobal(rawsize);
Marshal.StructureToPtr(anyValue, buffer, false);
byte[] rawdatas = new byte[rawsize * length];
Marshal.Copy(buffer, rawdatas, (rawsize * (length - 1)), rawsize);
Marshal.FreeHGlobal(buffer);
return rawdatas;
}
return new byte[0];
}
Некоторые случаи испытаний:
byte x = 45;
byte[] x_bytes = ToByteArray(x, 1);
int y = 234;
byte[] y_bytes = ToByteArray(y, 5);
int z = 234;
byte[] z_bytes = ToByteArray(z, 0);
Это создаст массив любого размера типа является то, что вы передаете в случае, если вы хотите только вернуться. байтовых массивов, это должно быть довольно легко изменить. Сейчас его в более общей форме
Чтобы получить то, что вы хотите в вашем примере вы могли бы сделать это:
int a = 0x01;
byte[] a_bytes = ToByteArray(Convert.ToByte(a), 2);
Не решает эту проблему. Предполагалось работать на произвольное количество запрошенных байтов, а не только на два. –