2012-01-13 3 views
1

님의 오디오 데이터는 void * const 형식입니다. 내 코덱에 대한 짧은 배열 (short *) 오디오 데이터를 원한다.Objective c를 사용하여 void * (void * const mAudioData)를 Short *로 변환 하시겠습니까?

Objective c에서 void * const를 Short *로 변환하는 방법 ??? 무효에서 가능한 짧은 형식으로 캐스트? 또는 나는 OSReadBigInt16 같은 일부 바이트 순서 변환을 사용해야합니까 ??? 그렇다면 변환을위한 샘플? 해결책을 찾도록 도와주세요.

+0

감사합니다. typecasting 자체가 좋은 답변을 위해 –

답변

1

예, Objective-C는 타입 캐스팅의 경우 C와 같습니다. 당신이 short * 포인터로 void * 포인터를 해석 할 경우 그 의미, 당신이 할 필요가있다 :

(short *)voidPointer 

바이트가 올바른 순서 (즉, 엔디안 불일치)에없는 경우, 당신이 필요합니다 그것도 다루려고 - 당신의 질문에있는 정보에 기초한 경우인지를 알 수있는 방법이 없습니다.

+0

고마워요. 내가 IOS 장치에 대한 위의 변환이 필요합니다. 그리고 내가 void * (8 비트)에서 unsigned char 형식 변환을 가지고, 잘 작동합니다. 만약 내가 짧은 (16 비트)로 캐스트 캐스트 입력 ??? –

+0

'void *'를 역 참조 할 수 없으므로 누가 가리키는 데이터가 '크기'인지 누가 알 수 있습니까? 프로그램이 제대로 작동하는지 여부는 전적으로 귀하와 프로그램의 특성에 달려 있습니다. 'void * '포인터가 가리키는 데이터는 무엇입니까? 16 비트 바이너리 데이터입니까? 그렇다면 간단한 형태 변환이 좋습니다. 그렇지 않다면 더 많은 일을해야합니다. –

+0

포인터가있는 API의 설명서를 확인하십시오. –

1

void*은 형식화되지 않은 포인터를 선언하기위한 규칙입니다. 이러한 포인터는 이어야하며 일부 데이터 형식에 대한 포인터로으로 다시 해석되어야합니다. 작동 여부는 사용자 또는 API가 void* 포인터가 가리키는 주소에 무엇을 넣는 지에 따라 달라집니다. 간격이없는 short 값의 시퀀스 인 경우 short*으로의 간단한 캐스팅이 수행됩니다. 그렇지 않으면 추가 변환을 수행해야합니다.

관련 문제