zoukankan      html  css  js  c++  java
  • C++中取出的字节数组转为结构

    byte[] BytePara = 为从C++里取出的字节数组;

    InfoDataStruct 为结构,循环将Byte数组里的内容转换为结构

     InfoDataStruct* p = (InfoDataStruct*)(BytePara+ (i * 55));

     InfoDataStruct dataStruct=  BytesToStruct<InfoDataStruct>(BytePara, (i * 55));

            ///不使用泛型,会使得编码繁琐。

            public static object BytesToStruct(byte[] bytes, int startIndex, Type strcutType)
            {
                int size = Marshal.SizeOf(strcutType);
                IntPtr buffer = Marshal.AllocHGlobal(size);
                try
                {
                    Marshal.Copy(bytes, startIndex, buffer, size);
                    return Marshal.PtrToStructure(buffer, strcutType);
                }
                finally
                {
                    Marshal.FreeHGlobal(buffer);
                }
            }

            /// <summary>
            /// byte数组转为结构
            /// </summary>
            /// <typeparam name="T">结构</typeparam>
            /// <param name="bytes">数组</param>
            /// <param name="startIndex">起始位置</param>
            /// <returns></returns>
            public static T BytesToStruct<T>(byte[] bytes, int startIndex)
            {
                T Obj = default(T);
                Type strcutType = typeof(T);
                int size = Marshal.SizeOf(strcutType);
                IntPtr buffer = Marshal.AllocHGlobal(size);
                try
                {
                    Marshal.Copy(bytes, startIndex, buffer, size);
                    Obj= (T) Marshal.PtrToStructure(buffer, strcutType);
                    return Obj;
                }
                finally
                {
                    Marshal.FreeHGlobal(buffer);
                }
            }

  • 相关阅读:
    SpringMVC 使用JSR-303进行校验 @Valid
    Hibernate Tools生成注释
    大型网站架构演变和知识体系(转载)
    eclipse从数据库逆向生成Hibernate实体类
    性能测试公众号,欢迎你的加入~
    mysql使用druid监控配置
    (转)面试为什么需要了解JVM
    (转)什么是缓存击穿?
    Mysql推荐使用规范(转)
    java应用监控工具
  • 原文地址:https://www.cnblogs.com/panjun/p/2812552.html
Copyright © 2011-2022 走看看