2011-07-18 135 views
0

如何將無符號8位PCM流(0-255)轉換爲帶符號8位PCM流(-128-127)。它是否像每個無符號字節中減去128那麼簡單,使得0變成-128而255變成127?還是更復雜? 謝謝!將8位無符號PCM轉換爲8位帶符號PCM

+0

也許你應該添加你想用來解決這個問題的編程語言的標籤。 – Nobody

回答

0

爲什麼不試試? 在我看來,它應該就夠了,但我不知道你在用什麼語言。

使用帶符號和無符號整數/字符時記住負值的內部表示法是二進制補碼。 最安全的是計算signed int大小以避免溢出。

+0

我在看一些我沒有寫的代碼,它只是將無符號轉換爲signed而奇怪的東西。事實上,它的功能如下:「signed char result =((signed char)(x + 128))* 257;」 (C代碼)。變量「x」是「unsigned char」類型,幷包含要轉換的示例。我根本沒有得到這個代碼。 * 257從哪裏來?但它的作品!? – Andy

+0

然後乘以257,然後夾緊到字符大小就像乘以1,所以它應該工作,但你可以離開257。也許原來的程序員想要擴大0-1的範圍,並且有問題,但是誰知道? – Nobody

+0

是的,好像忽略了* 257不會改變任何東西。所以我希望可以刪除它並且不要破壞任何東西......也許這是一些古老的編譯器bug的解決方法! – Andy

0

對於您在評論中發佈的代碼,減去128會顛倒上一次操作,並會爲您提供簽名數據。

相關問題