반응형
public static byte[] StructToByteArray(object objStruct)
{
int nSize = Marshal.SizeOf(objStruct);
byte[] arr = new byte[nSize];
IntPtr ptr = Marshal.AllocHGlobal(nSize);
Marshal.StructureToPtr(objStruct, ptr, false);
Marshal.Copy(ptr, arr, 0, nSize);
Marshal.FreeHGlobal(ptr);
return arr;
}
public static T ByteArrayToStruct<T>(byte[] buffer) where T : struct
{
int nSize = Marshal.SizeOf(typeof(T));
if (nSize > buffer.Length)
{
throw new Exception();
}
IntPtr ptr = Marshal.AllocHGlobal(nSize);
Marshal.Copy(buffer, 0, ptr, nSize);
T objStruct = (T)Marshal.PtrToStructure(ptr, typeof(T));
Marshal.FreeHGlobal(ptr);
return objStruct;
}
'Programming' 카테고리의 다른 글
.gitignore 파일 쉽게 생성하기 (0) | 2023.10.24 |
---|---|
[C#] wpf 프로젝트 빌드 시 exe파일에 dll 포함시켜서 빌드하기 (0) | 2023.10.17 |
[자격증] 2023 정보처리기사 필기 출제기준 (0) | 2022.12.05 |
특정 범위내에서 값의 비율(%) 산출 공식 (0) | 2022.09.01 |
[c#] JSON 내용을 Class화 시켜주는 사이트 (0) | 2022.08.10 |