int를 byte*로 설정하는 방법 C#
-
13-09-2020 - |
문제
바이트*의 특정 인덱스에서 int를 바이트*로 변환하려면 어떻게 해야 합니까?
이상적으로는 다음과 같은 것을 갖고 싶습니다.
unsafe{
byte* igm=stackalloc byte[8];
igm[4]=4283;
}
비트의 첫 번째 부분은 igm[4]로 설정되고 나머지 부분은 igm[5]로 설정됩니다.
편집하다:나는 이 문제를 처리할 수 있는 방법이 많이 있을 수 있다는 것을 알고 있으며, 가능하다면 가장 효율적인 방법을 찾고 있습니다.
해결책
시도 :
unsafe
{
byte* igm = stackalloc byte[8];
*(int*)(igm + 4) = 4283;
}
.
간단한 포인터 산술을 바이트 배열의 아무 곳이나 인덱싱 할 수 있음을 깨닫게되면 훨씬 쉽게 얻을 수 있습니다.
다른 팁
C #의 유형 시스템은 당신이 알아 차릴 수 있듯이 당신이 그 일을하지 못하게합니다.그러나 포인터가 적절한 유형으로 캐스팅 할 수 있습니다.
unsafe
{
byte* igm = stackalloc byte[8];
int* intPtr = (int*)igm;
intPtr[1] = 4283;
}
. 당신은 당신의 int를 깨뜨려야합니다 sizeof(int)
바이트 수를 지정한 다음 이 부분을 지정된 인덱스의 바이트*로 수동으로 설정합니다.
귀하의 데이터가 무엇이며 어디에 있는지 알 수 있으므로 더 안전합니다.
제휴하지 않습니다 StackOverflow