二维int数组转一维Byte数组
已验证可用
byte[] Array2Bytes(int[,] array)
{
byte[] bytes = new byte[4 * array.GetLength(0) * array.GetLength(1)];
int n = 0;
for (int i = 0; i < array.GetLength(0); i++)
for (int j = 0; j < array.GetLength(1); j++)
{
byte[] byInt = BitConverter.GetBytes(array[i, j]);
for (int k = 0; k < 4; k++)
{
bytes[n++] = byInt[k];
}
}
return bytes;
}
一维float数组变为一维byte 数组
已验证可用
public static byte[] ConvertToByteArray(float[] srcFloat)
{
unsafe
{
int srcLen = srcFloat.Length;
int FLOATLEN = sizeof(float);
byte[] dstByte = new byte[FLOATLEN * srcLen];
int index = 0;
for (int i = 0; i < srcLen; i++)
{
float temp = srcFloat[i];
byte* pdata = (byte*)&temp;
//byte[] byteArray = new byte[FLOATLEN];
index = i * FLOATLEN;
for (int j = 0; j < FLOATLEN; j++)
{
dstByte[index] = *pdata++;
++index;
}
}
return dstByte;
}
}
byte 数组变为float 数组
已验证可用
public static float[] ConvertToFloatArray(byte[] srcByte)
{
unsafe
{
int FLOATLEN = sizeof(float);
int srcLen = srcByte.Length;
int dstLen = srcLen / FLOATLEN;
float[] dstFloat = new float[dstLen];
for (int i = 0; i < dstLen; i++)
{
float temp = 0.0F;
void* pf = &temp;
fixed (byte* pxb = srcByte)
{
byte* px = pxb;
px += i * FLOATLEN;
for (int j = 0; j < FLOATLEN; j++)
{
*((byte*)pf + j) = *(px + j);
}
dstFloat[i] = temp;
}
}
return dstFloat;
}
}