我最近买了一些蓝牙LE设备,想在Unity中读取来自它们的数据。问题是我使用的库只给了我一个字节数组。但我需要一个sbyte数组。
输出示例:83,186,1,3
但我想:38, -70,1,3
下面是我的代码:
int x = 0;
int y = 0;
z = 0;
result = Convert.ToString(bytes[3], 2).PadLeft(8, '0');
Debug.Log("First Conversion:" + result.Remove(0,1) + " Original:" + bytes[3]);
sbyte result1 = sbyte.Parse(result.Remove(0,1));
Debug.Log("Conversion:" + result1 + " Original:" + bytes[3]);
我已经试了5个小时了,最远的一次是一个错误,说我的数字太小或太大。
1条答案
按热度按时间zf9nrax11#
有一种简单的转换方法,您可以用途:
它的工作原理是byte和sbyte在内存中具有相同的长度。它们可以在不改变内存表示的情况下进行转换。
然而,
上面的方法可能会导致调试器的错误和奇怪的行为。2如果字节数组不是那么大,你可以用
Array.ConvertAll
来代替。