본문 바로가기
유니티 공부/C# 문법

C#- ToBytes(c#에서 포인터 사용해보기)

by 코딩하는 돼징 2023. 8. 4.
반응형

C#에서 포인터를 사용하여 ulong타입의 값을 바이트 배열에 변환하여 저장하는 것으로 예시

ToBytes

static unsafe void ToBytes(byte[] array, int offset, ulong value)

매개변수

array : 변환할 데이터를 저장하는 바이트 배열이다.

offset : array 배열에서 데이터 저장할 시작 위치를 나타내는 오프셋이다.

value : 바이트 배열로 변환할 ulong데이터이다.


static unsafe void ToBytes(byte[] array, int offset, ulong value)
{
    fixed (byte* ptr = &array[offset])
        *(ulong*)ptr = value;
}

01 ptr - araay[offset]을 가리키는 포인터

fixed (byte* ptr = &array[offset])


02 array[offset]에 ulong형식의 value값을 저장

ptr을ulong*타입으로 캐스팅하여 사용하면 ptr이 가리키는 메모리 주소로부터 8byte를 읽어 ulong으로 해석한 값이 저장된다.

어떻게 8byte를 읽어올까?

byte*타입의 포인터는 1바이트씩 데이터를 읽어오므로 이는 메모리 주소로부터 1바이트씩 데이터를 읽어온다. ulong*타입의 포인터는 8바이트씩 데이터를 읽어므로 이는 메모리 주소로부터 8바이트씩 데이터를 읽어온다. 그러므로 포인터 캐스팅 기능을 통해 메모리 주소로부터 8바이트 데이터를 읽어 올 수 있다.

 *(ulong*)ptr = value;

offset이 2라고 가정

 

 

반응형

'유니티 공부 > C# 문법' 카테고리의 다른 글

C# - LinkedList 개념, 프로퍼티, 메서드 설명  (0) 2023.09.20
C# - Xml 및 System.Xml 클래스들  (0) 2023.08.19
C# - TryWriteBytes  (0) 2023.08.03
C# - ArraySegment<T> Struct  (0) 2023.07.19
C# 문법 - Tuple<T1,T2>  (0) 2023.06.14

댓글