【发布时间】:2018-07-26 09:22:17
【问题描述】:
我通过 BLE 收到一个 4 字节长的数组,我有兴趣将 最后两个字节 转换为 浮点 十进制表示(float, @987654322 @ 等)在 C# 中。原始值具有以下格式:
1 sign bit
4 integer bits
11 fractional bits
我的第一次尝试是使用BitConverter,但我对这个过程感到困惑。
示例:我收到一个byte 数组values,其中values[2] = 143 和values[3] = 231。这 2 个字节组合起来代表上面指定格式的值。我不确定,但我认为应该是这样的:
SIGN INT FRACTION
0 0000 00000000000
此外,由于该值包含两个字节,我尝试使用BitConverter.ToString 来获取十六进制表示,然后连接字节。在这一点上,我不确定如何继续。
感谢您的帮助!
【问题讨论】:
-
举个例子...信息太少...小数位如何表示?在 12.345 中,345 是小数位吗? (和 12 个整数位)
-
如果出现“
values[2] = 143和values[3] = 231”,答案是什么?是-1.987793吗? -
是的,对于那些值,我使用您的实现得到 -1.987793
-
@John Szatmari:请问“
values[2] = 143和values[3] = 231”的正确答案是什么?如果你真的有,比如说,一些奇怪的 BCD,你可能想要一些其他的实现。
标签: c# floating-point bluetooth-lowenergy