C# 温度转换-2';s补码-13位

C# 温度转换-2';s补码-13位,c#,temperature,C#,Temperature,我一直在尝试将下表转换为c#中有价值的东西 我有一个2字节的数组,比如 byte[] data = new byte[2]; data [ 0 ] = 0x00; data [ 1 ] = 0xc9; anyhone是否有将下图转换为c#方法的方法 该格式适用于DS2438智能电池监视器IC- 注:底部3位始终为0,因此不应作为公式的一部分并排除在外 该值乘以0.03125得出最终温度 所以这里的例子是0xc900,它等于-1760或-1760*0.03125=-55C 非常感谢您的帮助。

我一直在尝试将下表转换为c#中有价值的东西

我有一个2字节的数组,比如

byte[] data = new byte[2];

data [ 0 ] = 0x00;
data [ 1 ] = 0xc9;
anyhone是否有将下图转换为c#方法的方法

该格式适用于DS2438智能电池监视器IC-

注:底部3位始终为0,因此不应作为公式的一部分并排除在外

该值乘以0.03125得出最终温度

所以这里的例子是0xc900,它等于-1760或-1760*0.03125=-55C


非常感谢您的帮助。

看起来只是
(float)(sbyte)数据[1]+(float)数据[0]/256


它是13位而不是16位并不重要;因为达拉斯改变了一些东西,制作了一个漂亮的8.8定点表示。如果您的传感器具有更高的分辨率,则将使用这些低位,但数学仍然完全相同。

看起来它只是
(浮点)(sbyte)数据[1]+(浮点)数据[0]/256


它是13位而不是16位并不重要;因为达拉斯改变了一些东西,制作了一个漂亮的8.8定点表示。如果您的传感器具有更高的分辨率,则将使用这些低位,但数学仍然完全相同。

否-这是不正确的-您的结果产生的温度为0.78515625,但应为-1760,因为您将其乘以0.03125在两个计数上是错误的;这将产生一个-55.0的结果,正确答案是-55.0。我认为您的字节顺序不正确。请尝试以另一种方式编制索引,可能是,哪个字节是MSB数据[0]或数据[1],即您编写问题的方式,这个答案是正确的你是正确的-惊人的事情如此简单让我困惑了几个小时。不-这是不正确的-你的结果产生了0.78515625的温度,但它应该是-1760,因为你然后乘以0.03125在两个计数上是错误的;这将产生一个-55.0的结果,正确答案是-55.0。我认为您的字节顺序错误。请尝试以另一种方式编制索引,也许,哪个字节是MSB数据[0]或数据[1]。按照您编写问题的方式,此答案是正确的您是正确的-令人惊讶的是,如此简单的事情让我困惑了好几个小时。