2012-01-13 82 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*即可工作;否則,您可能需要執行其他轉換。

相關問題