2012-01-13 39 views
1

我有AudioQueueBuffer的音频数据其中有void * const的格式。我想短阵列(short *)我的编解码器的音频数据。使用Objective C将void *(void * const mAudioData)转换为Short *

如何在目标c中将void * const转换为Short *从虚空类型转换为可能的短点?或者我必须使用一些字节顺序转换,如OSReadBigInt16 ???如果是这样的转换样本?请帮我找到解决办法。

+0

感谢所有。类型转换本身工作正常 – 2012-01-18 03:58:35

回答

1

是的,Objective-C就像用于类型转换的C一样。这意味着如果你要解释你void *指针作为short *指针,所有你需要做的是:

(short *)voidPointer 

如果字节不按照正确的顺序(即字节顺序不匹配),则需要也要处理这个问题 - 尽管如此,没有办法根据问题中的信息来判断是否属于这种情况。

+0

感谢您的快速回复。我需要IOS设备的上述转换。还有一件事我从无效*(这是8位)typecast无符号字符,它工作正常。如果我输入简短(16位)是可能的? – 2012-01-13 04:05:16

+0

你根本不能解引用一个'void *',所以谁在乎它指向的数据大小是多少?这完全取决于你和你的程序的具体细节,如果它要工作与否。 void *指针指向的数据是什么?它是16位二进制数据吗?如果是这样,一个简单的类型转换就可以了。如果没有,你还有更多的工作要做。 – 2012-01-13 04:06:44

+0

查看给你指针的API的文档。 – 2012-01-13 04:20:16

1

void*是用于声明无类型指针的约定。这样的指针需要被重新解释为作为指向某些数据类型的指针。它是否工作取决于你或API在void*指针指向的地址处放置了什么:如果它是一个无空格的short值序列,则简单转换为short*即可工作;否则,您可能需要执行其他转换。

相关问题