写成非托管dll,c#中用importDll引入

解决方案 »

  1.   

    封装成dll,在C#里面用ImportDLL调用,unsigned char*用string值就可以了
      

  2.   

    你用的是CRC校验的话可以参照http://www.cnblogs.com/armyfai/p/3566582.html
    这个里面有C#的CRC校验代码,可以看看
      

  3.   


            /// <summary>
            ///CRC16校验算法,(低字节在前,高字节在后)
            /// </summary>
            /// <param name="data">要校验的数组</param>
            /// <returns>返回校验结果,低字节在前,高字节在后</returns>
            public static byte[] crc16(byte[] data)
            {
                if (data.Length == 0)
                    throw new Exception("调用CRC16校验算法,(低字节在前,高字节在后)时发生异常,异常信息:被校验的数组长度为0。");
                byte[] temdata = new byte[data.Length + 2];
                int xda, xdapoly;
                byte i, j, xdabit;
                xda = 0xFFFF;
                xdapoly = 0xA001;
                for (i = 0; i < data.Length; i++)
                {
                    xda ^= data[i];
                    for (j = 0; j < 8; j++)
                    {
                        xdabit = (byte)(xda & 0x01);
                        xda >>= 1;
                        if (xdabit == 1)
                            xda ^= xdapoly;
                    }
                }
                temdata = new byte[2] { (byte)(xda & 0xFF), (byte)(xda >> 8) };  //低字节在前,高字节在后
               //temdata = new byte[2] { (byte)(xda  & 0xff00  >> 8), (byte)(xda & 0x00FF) };  //高字节在前,低字节在后
                return temdata;
            }
            #endregion