을 떠을 IntPtr로 변환 액세스 위반이, 그것은 확실히 메모리에서 부동의 (부동 소수점에서 읽기 값을 저장, 나는 그것을 확인했습니다 다른 유틸리티)하지만 내가 시도한 모든 것 (BitConverter, Marshal.Copy() 등)은 실패한 것 같다.C 번호 : Marshal.Copy()
나는 사례의 숫자 검토 한 난 그냥 내가 이해하지 못하는거야 모르겠어요.
나는 개념을 테스트 할 수있는 간단한 프로그램을 만들었다. 이 작업을 수행하는 다른 기술을 알고 있지만 문제가 있습니다. 그래서 지금 당장이 문제에 집중하고 있습니다. 기본적으로 나는 (알려진)의 IntPtr입니다 통해 4 바이트, 그것에 점의 배열의 float 값에서 바이트를 저장 한 다음 float로 IntPtr입니다 변환하려고 Marshal.Copy()를 사용 :const int FLOAT_SIZE = 4;
byte[] baSource = new byte[FLOAT_SIZE];
IntPtr ipIntermediate = Marshal.AllocHGlobal(sizeof(float));
float[] faDest = new float[1];
baSource[0] = 0xA7;
baSource[1] = 0x68;
baSource[2] = 0xB9;
baSource[3] = 0x44;
ipIntermediate = ((IntPtr)(baSource[0]));
Marshal.Copy(ipIntermediate, faDest, 0, 1); // causes AccessViolation exception
Windows 7 64 비트를 실행 중입니다. 현재 x86 용 빌드를 목표로 삼고 있지만 동일한 결과를 얻으려면 'Any CPU'만 시도했습니다. 엔디안 스는 문제가되지 않습니다.
도움을 주시면 감사하겠습니다.
감사합니다. 데이터를 고정하는 것을 완전히 잊어 버렸습니다. 나는 그것을 시험해 보지 않았다. (나는 깨졌고 BitConverter.ToSingle()을 사용했다.) 작동해야만한다. –