C# 实现byte 与float 之间的转换
2011-08-30 11:15
477 查看
//float 数据变为 byte 数组
private static byte[] ToByte(float data)
{
unsafe
{
byte* pdata = (byte*)&data;
byte[] byteArray = new byte[sizeof(float)];
for (int i = 0; i < sizeof(float); ++i)
byteArray[i] = *pdata++;
return byteArray;
}
}
//byte数组变为 float数值
private static float ToFloat(byte[] data)
{
unsafe
{
float a = 0.0F;
byte i;
byte[] x = data;
void* pf;
fixed (byte* px = x)
{
pf = &a;
for (i = 0; i < data.Length; i++)
{
*((byte*)pf + i) = *(px + i);
}
}
return a;
}
}
//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;
}
}
//byte 数组变为float 数组
public static float?[] ConvertToNullAbleFloatArray(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;
}
}
double CVCTestDlg::String2TimeDouble(char * strtime)
{
int iY = 0,iMon = 0,iD = 0,iH = 0,iM = 0,iSS = 0;
sscanf(strtime,"%d-%d-%d %d:%d:%d",&iY,&iMon,&iD,&iH,&iM,&iSS);
CTime t(iY,iMon,iD,iH,iM,iSS);
return (double)t.GetTime();
}
相关文章推荐
- C#实现Stream与byte[]之间的转换实例教程
- C#实现Stream与byte[]之间的转换实例教程
- C#实现Stream与byte[]之间的转换实例教程
- C# Stream 和 byte[] 之间的转换(文件流的应用)
- C# Stream 和 byte[] 之间的转换
- [C#] Byte[]、Image、Bitmap 之间的相互转换
- c#实现16进制和字符串之间转换的代码
- C# 字符串string和内存流MemoryStream及比特数组byte[]之间相互转换
- c#实现16进制和字符串之间转换的代码
- java中byte数组与int,long,short,float,char之间的转换
- Java中byte数组与short,int,char,long,float,double之间的转换
- C# Stream 和 byte[] 之间的转换字符类型的转换GB2312
- C# Stream 和 byte[] 之间的转换 [转]
- C# 图片与byte[]之间以及byte[]与string之间的转换
- 如何实现int、char*、float、与CString之间的转换
- c#中int32与byte[]之间的互换,以及base64编码的转换
- C#实现XML与实体类之间相互转换的方法(序列化与反序列化)
- C# Stream 和 byte[] 之间的转换
- C# DateTime日期和byte[]之间的转换
- C# Stream 和 byte[] 之间的转换