我有AudioQueueBuffer
的音頻數據其中有void * const
的格式。我想短陣列(short *
)我的編解碼器的音頻數據。使用Objective C將void *(void * const mAudioData)轉換爲Short *
如何在目標c中將void * const轉換爲Short *從虛空類型轉換爲可能的短點?或者我必須使用一些字節順序轉換,如OSReadBigInt16
???如果是這樣的轉換樣本?請幫我找到解決辦法。
我有AudioQueueBuffer
的音頻數據其中有void * const
的格式。我想短陣列(short *
)我的編解碼器的音頻數據。使用Objective C將void *(void * const mAudioData)轉換爲Short *
如何在目標c中將void * const轉換爲Short *從虛空類型轉換爲可能的短點?或者我必須使用一些字節順序轉換,如OSReadBigInt16
???如果是這樣的轉換樣本?請幫我找到解決辦法。
是的,Objective-C就像用於類型轉換的C一樣。這意味着如果你要解釋你void *
指針作爲short *
指針,所有你需要做的是:
(short *)voidPointer
如果字節不按照正確的順序(即字節順序不匹配),則需要也要處理這個問題 - 儘管如此,沒有辦法根據問題中的信息來判斷是否屬於這種情況。
感謝您的快速回復。我需要IOS設備的上述轉換。還有一件事我從無效*(這是8位)typecast無符號字符,它工作正常。如果我輸入簡短(16位)是可能的? – 2012-01-13 04:05:16
你根本不能解引用一個'void *',所以誰在乎它指向的數據大小是多少?這完全取決於你和你的程序的具體細節,如果它要工作與否。 void *指針指向的數據是什麼?它是16位二進制數據嗎?如果是這樣,一個簡單的類型轉換就可以了。如果沒有,你還有更多的工作要做。 – 2012-01-13 04:06:44
查看給你指針的API的文檔。 – 2012-01-13 04:20:16
void*
是用於聲明無類型指針的約定。這樣的指針需要被重新解釋爲作爲指向某些數據類型的指針。它是否工作取決於你或API在void*
指針指向的地址處放置了什麼:如果它是一個無空格的short
值序列,則簡單轉換爲short*
即可工作;否則,您可能需要執行其他轉換。
感謝所有。類型轉換本身工作正常 – 2012-01-18 03:58:35