如何在C#中的字节数组上执行按位运算符

时间:2010-09-03 15:46:24

标签: c# xna

我正在使用C#和Microsoft.Xna.Framework.Audio;

我设法将一些音频录制到byte[]数组中,然后我可以播放它。

音频以8 bit无符号数据形式出现,我想将其转换为16 bit单声道签名音频,以便我可以读取频率不是。

我已经阅读了一些用于声音采样的地方,您执行了Bitwise Operator Orshift the bits 8 places

我已按如下方式执行了代码;

soundArray[i] = (short)(buffer[i] | (buffer[i + 1] << 8));

我最终得到的是很多负面数据。

根据我的理解,它主要需要处于积极状态,并代表一波数据。

任何建议或帮助都非常感谢,

干杯。

MonkeyGuy。

2 个答案:

答案 0 :(得分:1)

这将两个 8位无符号整数组合成一个16位有符号整数:

soundArray[i] = (short)(buffer[i] | (buffer[i + 1] << 8));

我认为您可能想要的是简单地将每个 8位无符号整数扩展为16位有符号整数:

soundArray[i] = (short)((buffer[i] - 128) << 8);

alt text

答案 1 :(得分:0)

您是否尝试在转换之前将字节转换为短?