VisualStudio/C# 39

[C#] is 와 as

C#에서 is와 as 키워드는 타입 검사를 수행하고 타입 변환을 안전하게 처리하는 데 사용됩니다. 이 키워드들은 특히 상속 관계에 있는 객체를 다룰 때 유용합니다.is 키워드is 키워드는 객체가 특정 타입인지 확인할 때 사용됩니다. 객체가 해당 타입이거나 해당 타입에서 파생된 타입이면 true를 반환하고, 그렇지 않으면 false를 반환합니다. 또한, C# 7.0부터는 is 키워드를 사용하여 변환된 결과를 새로운 변수에 할당할 수도 있습니다.class Base { }class Derived : Base { }class Program{ static void Main() { Base b = new Derived(); if (b is Derived) { ..

VisualStudio/C# 2024.05.27

[C#] AES128 암호화

AES는 128 비트 블록 크기를 가지며, 128, 192 또는 256 비트의 키를 사용할 수 있습니다. AES는 라운드라는 여러 단계를 거쳐 데이터를 암호화하고 복호화합니다. 각 라운드에서는 다양한 변환 과정을 거쳐 데이터가 혼합되고 변환됩니다.AES의 특징은 다음과 같습니다:안전성: AES는 공격에 강한 구조를 갖고 있습니다. 충분한 키 크기와 충분한 라운드 수를 사용하여 안전한 암호화를 제공합니다.효율성: AES는 효율적인 구현이 가능하며, 속도와 리소스 사용을 최적화하여 빠른 암호화 및 복호화를 제공합니다.대칭 키 알고리즘: AES는 대칭 키 알고리즘입니다. 즉, 암호화 및 복호화에 동일한 키가 사용됩니다.표준화: AES는 미국 국가 표준 기술 연구소(NIST)에 의해 표준으로 채택되었습니다.AE..

VisualStudio/C# 2024.05.07

[프로그래머스/C++] 조건에 맞게 수열 변환하기 2

https://school.programmers.co.kr/learn/courses/30/lessons/181881 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 소스 #include #include using namespace std; int solution(vector arr) { int answer = 0; vector temp; while (true) { temp = arr; for (int i = 0; i = 50 && v % 2 == 0) { arr[i] = v / ..

VisualStudio/C# 2024.03.07

[C#] Google Protobuf형식 기반 ProtoBuff-net 사용 방법

Protobuf 참고 사이트 및 공식 https://github.com/protobuf-net/protobuf-net GitHub - protobuf-net/protobuf-net: Protocol Buffers library for idiomatic .NET Protocol Buffers library for idiomatic .NET . Contribute to protobuf-net/protobuf-net development by creating an account on GitHub. github.com https://dotnetcoretutorials.com/protobuf-in-c-net-part-1-getting-started/#google_vignette Protobuf In C# .NET..

VisualStudio/C# 2023.11.02

[C#] List<T> LINQ 모음

1. Take List에서 index 0부터 원하는 count만큼 객체를 반환한다 이때 ListCount보다 찾고자 하는 Count가 클 경우 오류가 발생하지 않고 List가 반환된다. 아래 예제는 0번인덱스 부터 0~1 2개의 객체를 반환하라는 뜻이다. static void Main(string[] args) { List testList = new List() { 1,2,3,4,5 }; List taskList = testList.Take(2).ToList(); foreach (var item in taskList) Console.WriteLine(item); } 2. Skip List에서 원하는 index부터 끝까지 객체를 반환한다. 아래 예제는 3번 index 부터 나머지 모든 객체를 반환한다. s..

VisualStudio/C# 2023.09.21

[C#] Enum타입 리플렉션(Reflection)사용하여 값 받아오는 방법

정의한 Enum enum TestEnum { test1, test2, test3, } Enum -> string string name1 = Enum.GetName(typeof(TestEnum), 0); string name2 = Enum.GetName(typeof(TestEnum), TestEnum.test1); Console.WriteLine($"{name1}, {name2}"); Enum -> string[] string[] names = Enum.GetNames(typeof(TestEnum)); foreach (string name in names) { Console.Write($"{name}, "); } string -> Enum TestEnum myenum1 = (TestEnum)Enum.Par..

VisualStudio/C# 2023.02.16

[C#] Byte를 (Hex)값 문자열 출력 Byte to Hexstring, 문자열 hex byte로 출력

byte(hex) to Hexstring byte[] recvBuffer = new byte[5]; recvBuffer[0] = 0x31; recvBuffer[1] = 0x32; recvBuffer[2] = 0x33;= string strRecvBuffer = BitConverter.ToString(recvBuffer); // byte -> string Console.WriteLine(strRecvBuffer); 출력 : 31-32-33 BitConverter.ToString() 을 사용하면 바이트 값을 그대로 문자열로 가져온다. Hexstring to byte(hex) string strbyte = @"50-00-0C-00-12-00-00-00-01-00-00-00-32-30-32-33-30-33-31..

VisualStudio/C# 2023.02.09

[C#] Struct를 byte로 변환, byte를 Struct로 변환

static byte[] StructToByte(object obj) { //구조체 사이즈 int size = Marshal.SizeOf(obj); //사이즈 만큼 메모리 할당 받기 byte[] buffer = new byte[size]; IntPtr ptr = Marshal.AllocHGlobal(size); //구조체 주소값 가져오기 Marshal.StructureToPtr(obj, ptr, false); //메모리 복사 Marshal.Copy(ptr, buffer, 0, size); Marshal.FreeHGlobal(ptr); return buffer; } public static byte[] StructToByte(T structure) where T : struct { byte[] buffer..

VisualStudio/C# 2023.02.02

[C#] Action.Invoke() vs Action() 차이

action.Invoke는 action?.Invoke와 같이 action 콜백이 null인지 검사하고 null이 아닐 때에만 Invoke 되도록 사용하고자 할 때 많이 사용한다. 기존 예외처리 if(_action !=null) _action.Invoke(3);// _action(3) 과 같은 코드 ? 키워드를 사용 한 예외처리 _action?.Invoke(3); //if(_action !=null)를 ?키워드를 사용하여 null임을 체크할 수 있다. action(); 는 action.Invoke()와 컴파일과정이 100프로 동일 하다. action이 null이면 NullReferenceException을 뱉기 때문에 위험하다 그래서 invoke를 사용하기 전에 null 검사를 해야 하며 기존 예외처리 처..

VisualStudio/C# 2023.01.05