将 8 位无符号 PCM 转换为 8 位有符号 PCM
如何将无符号 8 位 PCM 流 (0-255) 转换为有符号 8 位 PCM 流 (-128-127)。是不是就像从每个无符号字节中减去 128 这样 0 变成 -128,255 变成 127 一样简单?还是更复杂? 谢谢!
How can I convert an unsigned 8bit PCM stream (0-255) into a signed 8bit PCM stream (-128-127). Is it as simple as subtracting 128 from every unsigned byte so that 0 becomes -128 and 255 becomes 127? Or is it more complicated?
Thanks!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
你为什么不尝试一下呢?
在我看来应该足够了,但我不知道你使用的是什么语言。
当使用有符号和无符号整数/字符时,请记住负值的内部表示是二进制补码。
最安全的方法是按
signed int
大小进行计算以避免溢出。Why dont you try it?
In my opinion it should suffice but I don't know what language you are using.
When working with signed and unsigned integer/char bear in mind that the internal representation for negative values is the two's complement.
Safest would be to calculate in
signed int
size to avoid overflows.对于您在评论中发布的代码,减去 128 将反转之前的操作并给出签名数据。
For the code you posted in your comment, subtracting 128 will reverse the previous operation and will give you the signed data.