Programming/C# (2) 썸네일형 리스트형 구조체 -> 바이트 배열, 바이트 배열 -> 구조체 통신 프로그램을 만들 때 프로토콜을 구조체로 잡고 바이트 배열로 쏘는 경우가 생기는데 아래와 같이 하면 된다. // 구조체를 바이트 배열로 변환 public static int CvtStructToBin(object obj, out byte[] bin) { bin = new byte[Marshal.SizeOf(obj)]; unsafe { fixed (byte* fixed_buffer = bin) { Marshal.StructureToPtr(obj, (IntPtr)fixed_buffer, false); } } return bin.Length; } // 바이트 배열을 구조체로 변환 public static int CvtBinToStruct(byte[] bin, object obj) { unsafe { fix.. C#에서 로그 함수 만들기 C나 C++에서 콘솔이나 UI의 디버깅창에 로그를 남기면서 파일로도 로그를 남기는 작업을 했었다. 주로 서버 개발이나 펌웨어 개발할 때 썼었는데 이번 프로젝트는 c#을 사용해야 하기에 맘먹고 만들어봤다. 소스코드는 아래에 있고 로그 발생지(eBlk)나 로깅 수준(eLevel)은 입맛대로 바꿔서 쓰면 될듯... 보통 릴리즈 후에는 어느정도 버그를 잡았다고 보기 때문에 ERROR, ABNORMAL, ESSENTIAL 정도만 남겨두고 나머지 로깅 수준은 꺼두는 것이 좋다. 이러한 로깅 수준 조정은 설정 파일을 따로 두어서 설정 내용에 따라 조정하면 되겠다. 아래 소스에서는 일단 모두 보이게 하는 것으로 해두었다. public enum eBlk { BLK_GATE = 0, BLK_MNGR, BLK_MAIN, B.. 이전 1 다음