C# 如何在C语言中对字节数组执行位运算符#
我正在使用C#和C# 如何在C语言中对字节数组执行位运算符#,c#,xna,C#,Xna,我正在使用C#和Microsoft.Xna.Framework.Audio 我已成功地将一些音频录制到字节[]数组中,并能够播放 音频以8位无符号数据的形式输入,我想将其转换为16位单符号音频,这样我就可以读取频率了 我读过一些地方,对于声音采样,您可以执行逐位运算符或和将位移位8位 我已执行以下代码 soundArray[i] = (short)(buffer[i] | (buffer[i + 1] << 8)); soundArray[i]=(short)(buffer[i]|
Microsoft.Xna.Framework.Audio
我已成功地将一些音频录制到字节[]
数组中,并能够播放
音频以8位
无符号数据的形式输入,我想将其转换为16位
单符号音频,这样我就可以读取频率了
我读过一些地方,对于声音采样,您可以执行逐位运算符或
和将位移位8位
我已执行以下代码
soundArray[i] = (short)(buffer[i] | (buffer[i + 1] << 8));
soundArray[i]=(short)(buffer[i]|(buffer[i+1]您是否尝试在移位前将字节转换为short?您是否尝试在移位前将字节转换为short?这将两个8位无符号整数合并为一个16位有符号整数:
soundArray[i] = (short)(buffer[i] | (buffer[i + 1] << 8));
soundArray[i] = (short)((buffer[i] - 128) << 8);
soundArray[i]=(short)(buffer[i]|(buffer[i+1]这将两个8位无符号整数组合成一个16位有符号整数:
soundArray[i] = (short)(buffer[i] | (buffer[i + 1] << 8));
soundArray[i] = (short)((buffer[i] - 128) << 8);
soundArray[i]=(short)(buffer[i]|(buffer[i+1])您不能移动字节。如果您使用Yes,我会在按位转换打开之前执行;soundArray[i]=(short)(buffer[i]|(buffer[i+1])您不能移动字节。如果您使用Yes,我会在按位转换打开之前执行;soundArray[i]=(short)(buffer[i]|(buffer[i+1]现在仍然有很多负数,但是有很多正数,它们在32000标记的范围内非常高。采样比特率显然是16000hz。现在仍然有很多负数,但是有很多正数,它们在32000标记的范围内非常高。采样比特率显然是16000hz。