■ 바이트 배열에서 구조체 객체 구하기

------------------------------------------------------------------------------------------------------------------------

using System;

using System.Runtime.InteropServices;

 

#region 객체 구하기 - GetObject<T>(sourceByteArray)

 

/// <summary>

/// 객체 구하기

/// </summary>

/// <typeparam name="T">객체 타입</typeparam>

/// <param name="sourceByteArray">소스 바이트 배열</param>

/// <returns>객체</returns>

public static T GetObject<T>(byte[] sourceByteArray) where T : struct

{

    int objectSize = Marshal.SizeOf(typeof(T));

 

    if(objectSize > sourceByteArray.Length)

    {

        throw new Exception();

    }

 

    IntPtr handle = Marshal.AllocHGlobal(objectSize);

 

    Marshal.Copy(sourceByteArray, 0, handle, objectSize);

 

    T targetObject = (T)Marshal.PtrToStructure(handle, typeof(T));

 

    Marshal.FreeHGlobal(handle);

 

    return targetObject;

}

 

#endregion

------------------------------------------------------------------------------------------------------------------------

Posted by 사용자 icodebroker
TAG