프로그램/유니티 스크립트 소스

[유니티 스크립트 소스] Struct ↔ Byte 배열

코더 제로 2020. 3. 12. 00:34
728x90
반응형

1. 네임스페이스

네임스페이스
using System;
using System.Runtime.InteropServices;

 

2. Byte 배열  Struct

메서드 : Byte 배열  Struct
public T ByteArrayToStruct<T>(byte[] buffer) where T : struct
{
    int size = Marshal.SizeOf(typeof(T));
    if (size > buffer.Length)
    {
        throw new Exception();
    }
               
    IntPtr ptr = Marshal.AllocHGlobal(size);
    Marshal.Copy(buffer, 0, ptr, size);
    T obj = (T)Marshal.PtrToStructure(ptr, typeof(T));
    Marshal.FreeHGlobal(ptr);
    return obj;
}

 

3. Struct → Byte 배열

메서드 : Struct → Byte 배열
public byte[] StructToByteArray(object obj)
{
    int size = Marshal.SizeOf(obj);
    byte[] arr = new byte[size];
    IntPtr ptr = Marshal.AllocHGlobal(size);

    Marshal.StructureToPtr(obj, ptr, true);
    Marshal.Copy(ptr, arr, 0, size);
    Marshal.FreeHGlobal(ptr);
    return arr;
}
728x90
반응형