으로 변환 현재 일부 C++ 코드를 C# 환경으로 변환해야하는 프로젝트를 진행 중입니다. 대부분의 경우, 실제로는 꽤 간단하지만 현재는 저수준 메모리 조작 함수를 변환하고 진행 방법에 대한 불확실성이 있습니다. 는 C++ 코드에서 C++ 포인터 수학을 C#
, 나는 이런 것들의 경우 많은 (분명히 매우 단순화 된)이있어 :void SomeFunc(unsigned char* myMemoryBlock)
{
AnotherFunc(myMemoryBlock);
AnotherFunc(myMemoryBlock + memoryOffset);
}
void AnotherFunc(unsigned char* data)
{
// Also simplified - basically, modifying the
// byte pointed to by data and then increasing to the next item.
*data = 2;
data++;
*data = 5;
data++;
// And so on...
}
나는 C#으로 그렇게 생각하고를, 나는 기본적으로 치료에있어 "unsigned char *"를 바이트 배열 (byte [])로 사용합니다. 그러나 포인터 연산과 비슷한 연산을 수행하는 것은 기본적으로 바이트 배열에 액세스하기위한 "currentIndex"값을 늘리는 것입니까? AnotherFunc 같은 것을 위해, 나는 시작 인덱스가 0이 아닌 경우에도 시작 인덱스를 전달해야한다는 것을 의미한다고 생각하십니까?
그냥 C#으로 수행해야하는 방법인지 또는 해당 변환을 수행하는 더 좋은 방법이 있는지 확인하고 싶습니다. 또한 현재 환경에서 "안전하지 않은"키워드를 사용할 수 없기 때문에 실제로 포인터를 사용할 수 없습니다!
매번 나는 myMemoryBlock C++에서이 같은 코드를 본 적이)이있다 기본적으로 우리는 C#에서 클래스라고 부릅니다. 어쩌면이 객체를 객체로 변환하는 것이 길이다. – Hogan
그래, 상황이 중요하지만 네가 한 말은 맞는 것 같아. – BWG
네, "unsigned char *"를 byte [] 또는 char []로 대체 할 수 있습니다 (필요한 것에 따라 다름). 그리고 memoryoffset 대신에 인덱스를 지정하십시오 (memoryoffset에 대한 C++ -> 계산의 "char"크기에 따라 다름). – hugoterelle