gpt4 book ai didi

java - 令人困惑的类型转换 - 2 字节到 Double

转载 作者:行者123 更新时间:2023-12-02 08:36:42 26 4
gpt4 key购买 nike

我最近被要求接手一个项目,其中波形数据从电源转换器采样并发送到智能代理,在智能代理中进行计算并根据结果采取适当的操作。

以下 (java) 片段是之前的编码器用于将字节数组转换为 double 组的内容:

        LSB = (0XFF & (int)ipPacket[index]);
double temp = LSB/256.0;

MSB = (byte)(0XFF & (byte)ipPacket[index+1]);
double output = (double)(MSB + temp);

ConvCurrentPhaseR[doubleArrayIndex] = (double)(output);

(注:LSB为整数,MSB为字节)

老实说,我不知道以前的编码员是如何想出这种转换的。这对我来说没有任何意义。为什么 LSB 除以 256?即使原始数据是 float (4 字节),我们如何从 2 字节中得到 double (8 字节)?谁能解释一下这段代码发生了什么?

预先感谢您提供的任何帮助!

最佳答案

通过快速阅读,在我看来结果与以下内容相同:

output = (double)(ipPacket[index + 1] + (ipPacket[index] / 256.0));

假设 ipPacket 是一个字节数组,并且 (0xFF & byte) == byte。他实际上将 double 型的小数部分作为 1/256 的倍数存储在 ipPacket[index] 中,并将整数部分存储在 ipPacket[index+1] 中。

它的范围比常规 double 值小得多,这可能是您感到困惑的地方。

假设无符号字节,值的有效范围是从 0 到 255.99609375 的 double 值,表示十进制值的范围有限。

编辑:这里不包含值 256,因为无符号字节的范围为 0-255,小数区域的范围为 0 - (255/256 == .99609375)

关于java - 令人困惑的类型转换 - 2 字节到 Double,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1538633/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com