您的位置:首页 > 编程语言 > C#

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();

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  byte float c# string im