2011-07-18 136 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会颠倒上一次操作,并会为您提供签名数据。

相关问题