Вы можете использовать следующее
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);