在c#中,这个swift Uint8转换的等价物是什么?

在c#中,这个swift Uint8转换的等价物是什么?,c#,swift,xamarin.ios,byte,beacon,C#,Swift,Xamarin.ios,Byte,Beacon,我试图用c#转换这个快速的代码片段,但我有点困惑。基本上,我需要此函数从信标获取测距数据,如下所示: 我得到一个NSData并将其转换为UInt8数组。我只需要将元素放在第二个位置,并将其转换为带符号的int 这是我试过的c代码: int getTxPower(NSData frameData) { var count = frameData.Length; byte[] frameBytes = new byte[Convert.ToInt32(count)]; Marshal.Copy(

我试图用c#转换这个快速的代码片段,但我有点困惑。基本上,我需要此函数从信标获取测距数据,如下所示:

我得到一个NSData并将其转换为UInt8数组。我只需要将元素放在第二个位置,并将其转换为带符号的int

这是我试过的c代码:

int getTxPower(NSData frameData)
{
var count = frameData.Length;

byte[] frameBytes = new byte[Convert.ToInt32(count)];

Marshal.Copy(frameData.Bytes, frameBytes,0,Convert.ToInt32(count));

int txPower = frameBytes[1];

return txPower;
}
我也希望得到负值,因为正如链接中所写的那样,TxPower的值范围是-100 dBm到+20 dBm,分辨率为1 dBm

感谢那些帮助我的人。

大概不是:

int-txPower=frameBytes[1];
(它只是将无符号字节扩展到32位)

inttxpower=(int)((sbyte)帧字节[1]);
(将无符号字节重新插入为有符号字节,然后扩展到32位)

请注意,
(int)
可以隐式完成,如果它更清楚:

int-txPower=(sbyte)帧字节[1];
int getTxPower(NSData frameData)
{
var count = frameData.Length;

byte[] frameBytes = new byte[Convert.ToInt32(count)];

Marshal.Copy(frameData.Bytes, frameBytes,0,Convert.ToInt32(count));

int txPower = frameBytes[1];

return txPower;
}