Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在C语言中对字节数组执行位运算符#_C#_Xna - Fatal编程技术网

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]|

我正在使用C#和
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。