본문 바로가기

Programming/C#20

[C#] 리틀 엔디안, 빅 엔디안과 변환 방법을 알아보자 ✔ Little endian, Big endian C# endian Convert 엔디언(Endianness)은 쉽게 말해 배열에 바이트 데이터를 넣을때 바이트 순서를 의미한다. 흔히 통신을 이용하여 데이터를 주고 받을때 이 엔디안을 고려하며 프로그래밍을 해야한다. 대표적인 엔디안의 종류는 little endian, big endian이 있다. 우리가 주로 이용하는 컴퓨터는 대부분 윈도우나 인텔 기반의 리눅스가 많다. 이 시스템들은 리틀 앤디안 방식으로 돌아간다. 하지만 네트워크상으로 데이터를 전송할 때에는 빅 엔디안 기준으로 송수신된다. ● 빅 엔디안 big endian : 메모리 공간의 시작주소에서 메모리 마지막 주소 순서로 쓰는 방식 0[시작주소] -> 100[마지막주소] ● 리틀 엔디안 littl.. 2022. 5. 27.
[C#] int, float, bool,struct를 Null 로 초기화방법 - System.Nullable ✔ Value Type 을 Null로 초기화하기 struct 멤버변수를 Null로 초기화하기 System.Nullable 일반적으로 int, float, double, short 등등 (숫자로 표현되는것)은 모두 Null의 값을 가질 수 없다. (struct도 포함) int k = 1은 되지만 int k = null 을 선언하면 초기화 오류가 나타난다. 그래서 많은 사람들이 특정 초기값이라고 생각하며 int k = -999 이런식으로 사용하며 if(k == -999) 일때는 초기값이라고 판단하도록 했었다. 지금은 Nullable을 사용하여 null처리가 가능해졌다. 사용방법은 Type 뒤에 ?를 넣으면 된다. ● Value Type 을 Null로 초기화하여 사용방법 //Value Type 사용법 int?.. 2022. 5. 3.
[Unity, C#] FTP 다운로드, 업로드 하기 ✔ C# - FTP Download, Upload 안녕하세요. Unity에서 FTP로 파일을 다운로드하거나 업로드하기 위한 방법입니다. Unity에서 어차피 .Net을 사용하기에 C# API를 사용하는 것과 같습니다. FTP API를 사용하고 파일을 쓰기 위해 아래 네임스페이스를 추가한다. using System.Net; using System.IO; ● FTP 파일 다운로드 예제 public static string DownloadFile(string ftpPath, string FileNameToDownload, string userName, string password, string tempDirPath) { string ResponseDescription = ""; string PureFileNa.. 2022. 4. 21.
[C#] 문자열(string, char [])을 byte[] 바이트 배열로 변환, byte[] 바이트 배열을 string 문자열로 변환 ✔ C# - 인코딩 Convert string to byte[], byte[] to string Unicode, Base64, UTF-8 Encoding 보통 통신을 하여 데이터를 주고 받을 경우에는 데이터를 byte로 전송하게 된다. 그때 문자열 데이터는 byte로 변환하여 전송하고 또한 수신측에서는 byte를 전송받아 다시 string으로 변환하여 사용하게 된다. 이 변환과정을 인코딩이라고 한다. 인코딩 방식은 많이있지만 가장 많이 사용하는 인코딩방식은 UTF-8, Unicode, Base64가 있다. 하지만 송신측에서 Unicode로 인코딩하면 수신측에서도 Unicode 인코더를 사용하여야 한다. 아니면 다른 결과값을 나타낼 수 있다. 인코딩을 사용하기 위해서는 using System.Text를 사.. 2022. 4. 19.
[C#] Byte를 Bit 배열로 변환 - Bit를 Byte로 변환 ✔ Byte to Bit arry Bit to byte 1 Byte = 8 Bit 입니다. 그럼 1바이트를 비트로 변환하면 8개 Bit값으로 표현이 됩니다. BitArray를 이용하여 간단하게 변환이 가능합니다. BitArray를 사용하기 위해서는 using System.Collections 임포트해야합니다. ● Byte에서 BitArray로 변환 //임의의 3개의 바이트를 생성 byte[] _byte = new byte[3] { 5, 7, 9 }; //1바이트만 사용한다고 해서 아래처럼 사용하면 안됨. 배열을 넣어줘야됨 //byte _byte = 5; //BitArray에 byte 배열 넣어줌 BitArray bits = new BitArray(_byte); //BitArray 길이 확인 > 예제 기준.. 2022. 4. 1.
[C#] 배열의 복사 - 어떤게 제일 빠르지? (Buffer.BlockCopy, Array.Copy) ✔ C# 배열 복사 Buffer.BlockCopy 사용법 Array.Copy 사용법 Converting a string array to byte array 안녕하세요. C#에서 배열 복사 방법은 다양합니다. 그중에서 대표적인게 Buffer.BlockCopy 와 Array.Copy가 있다. 파라미터 정보는 아래와 같다. - Buffer.BlockCopy(원본배열, 원본배열의 복사 시작위치, 복사될배열, 복사될배열의 시작위치, 복사개수) - Array.Copy(원본배열, 원본배열의 복사 시작위치, 복사될배열, 복사될배열의 시작위치, 복사개수) - Array.Copy(원본배열, 복사될배열, 복사개수) - 인덱스 0부터 복사개수만큼 복사함 둘중에서 처리속도는 배열의 크기, 카피범위 size 계산 등에 따라 속도.. 2022. 3. 28.
[C#] 폴더안에 있는 파일들 찾아서 읽기 - DirectoryInfo ✔ 디렉토리 읽기, 하위 디렉토리 읽기 텍스트, 이미지 파일 읽기 (CSV, Image, txt 등) 자주 사용하는 것들인데 왜자꾸 잊어버리는건지.. 할때마다 검색하기 힘들어서 정리.. 특정 폴더 안에 있는 파일을 찾을 때에 사용합니다. 사용하기 위해서는 using System.IO를 등록해야합니다. ● 디렉토리 안에 파일 리스트 얻어오기 DirectoryInfo di = new DirectoryInfo("path"); foreach (FileInfo File in di.GetFiles()) { //디렉토리 경로를 포함한 내용 출력 Console.WriteLine(File.FullName); //파일이름만 출력 Console.WriteLine(File.Name); } ● 폴더안에 다른 폴더 정보 얻어오기.. 2022. 3. 14.
[C#] String 데이터를 특정 문자, 문자열로 나누기 (String Split) ✔ String.Split 특정 문자나 문자열로 텍스트 나누기 너무나 많이 쓰는 함수이다. 문자열에서 특정문자나 문자열로 찾아 배열로 나누는 기능이다. ● 특정 문자로 나누기 string str = "우리,나라,만세"; string[] str_split = str.Split(','); //결과 //str_split[0] = 우리 //str_split[1] = 나라 //str_split[2] = 만세 ● 문자열로 나누기 string str = "우리..나라..만세"; string[] str_split = str.Split(new[] { ".." }, StringSplitOptions.None); //결과 //str_split[0] = 우리 //str_split[1] = 나라 //str_split[2] = .. 2022. 1. 6.
[Unity3D, C#] 프로그램 윈도우 창 최소화, 최대화, 맨앞으로 활성화 ✔ C# Window user32.dll ShowWindow - MinimizeWindow, FullWindow 윈도우를 사용하면 창 최소화 최대화 버튼을 흔히 볼 수 있다. 프로그램에서 윈도우처럼 최소화버튼을 누르면 프로그램이 작업표시줄 밑으로 숨겨지고 최대화누르면 전체화면으로 되는 기능을 어떻게 만들까? user32.dll을 사용하면된다. 사용법은 아래와 같다. //창 속성 정의 [DllImport("user32.dll")] private static extern bool ShowWindow(IntPtr hwnd, int nCmdShow); //현재 활성화된 창의 IntPtr을 가져오는 함수 [DllImport("user32.dll")] private static extern IntPtr GetAct.. 2021. 11. 10.