문제

바이트*의 특정 인덱스에서 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) 바이트 수를 지정한 다음 이 부분을 지정된 인덱스의 바이트*로 수동으로 설정합니다.

귀하의 데이터가 무엇이며 어디에 있는지 알 수 있으므로 더 안전합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top