gpt4 book ai didi

java - 如何将十六进制字符串转换为 double 型?

转载 作者:行者123 更新时间:2023-12-02 10:06:33 32 4
gpt4 key购买 nike

我将 0x0000 到 0x01c2 范围内的十六进制值从 BLE 获取到我的手机 a 作为字符串。为了将其绘制在图表中,我必须将其转换为 double,我已经尝试过 this method但遗憾的是它对我的情况没有帮助。

以下是所提供链接中经过少量修改的代码:

String receivedData = CommonSingleton.getInstance().mMipsData; // 0x009a
long longHex = parseUnsignedHex(receivedData);
double d = Double.longBitsToDouble(longHex);

public static long parseUnsignedHex(String text) {
if (text.length() == 16) {
return (parseUnsignedHex(text.substring(0, 1)) << 60)
| parseUnsignedHex(text.substring(1));
}
return Long.parseLong(text, 16);
}

任何进一步的帮助将不胜感激。提前致谢。

最佳答案

您的值不是 IEEE-754 浮点值的十六进制表示形式 - 它只是一个整数。因此,在删除前导“0x”前缀后,只需将其解析为整数即可:

public class Test {
public static void main(String[] args) {
String text = "0x009a";

// Remove the leading "0x". You may want to add validation
// that the string really does start with 0x
String textWithoutPrefix = text.substring(2);
short value = Short.parseShort(textWithoutPrefix, 16);
System.out.println(value);
}
}

如果您确实在其他地方需要 double,则可以隐式转换:

short value = ...;
double valueAsDouble = value;

...但我会尽量避免这样做,除非你真的需要。

关于java - 如何将十六进制字符串转换为 double 型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55295966/

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