05.03.2009

Получение массива байтов из Int32 в С#

Для того чтобы получить массив байтов из числа типа Int32 можно воспользоваться следующим способом:



[StructLayout(LayoutKind.Explicit)]
public struct IntToByte
{
[FieldOffset(0)]
public Int32 _intValue;

[FieldOffset(0)]
public byte _b1;

[FieldOffset(1)]
public byte _b2;

[FieldOffset(2)]
public byte _b3;

[FieldOffset(3)]
public byte _b4;

}


Пример использования выше указанной структуры в создании методов по преобразованию:


...
/// Преобразование массива байт в Int32
public Int32 ByteArrayToInt(byte[] byteInt)
{
if (byteInt.Length != 4)
throw new Exception("Массив байт содержит не 4 байта.");

IntToByte intToByte;
intToByte._intValue = 0;
intToByte._b1 = byteInt[0];
intToByte._b2 = byteInt[1];
intToByte._b3 = byteInt[2];
intToByte._b4 = byteInt[3];

return intToByte._intValue;
}

/// Преобразование числа типа Int32 в массив байт
private byte[] IntToByteArray(Int32 intR)
{
IntToByte intToByte;
intToByte._b1 = 0;
intToByte._b2 = 0;
intToByte._b3 = 0;
intToByte._b4 = 0;

intToByte._intValue = intR;

return new byte[] {
intToByte._b1, intToByte._b2, intToByte._b3, intToByte._b4 };
}
...



Аналогично можно поступить и для других типов (float, double и т.д.)

Комментариев нет: