java - 如何在 iPhone 中将十六进制转换为 double

标签 java iphone objective-c

我在 Java 中有这段代码:

   String pr = "4173df24c969ff63"
   long prLongBits = Long.valueOf(pr, HEX_BASE).longValue();
   prDoubleValue = Double.longBitsToDouble(prLongBits);

结果:prDoubleValue = 2.083694058837832E7

我如何在 Objective C 中转换它? 我尝试从十六进制转换为长整数,然后将长整数转换为 double ,但没有正确的结果。

BR,

供应

最佳答案

我会尝试如下操作:

// Read the hex string into a 64-bit integer
unsigned long long doubleBits;
double result;
NSScanner *scanner = [NSScanner scannerWithString:@"4173df24c969ff63"];
if ([scanner scanHexLongLong:&doubleBits]) {
    memcpy(&result, &doubleBits, sizeof(result)l
}

我还没有尝试过,但基本思路应该是大致正确的。您希望将十六进制字符串转换为存储在适当大小的数字数据类型中的一堆字节。一旦该位模式在内存中,我们将其复制到分配给 double 的内存中。

这假定用于创建十六进制字符串的字符串表示使用与运行代码的字节顺序相同的字节顺序。

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

相关文章:

java - 从 protected void 类中获取值

java - 为什么我的服务器和客户端在服务器 Activity 开始时断开连接?

ios - 如何使用 UISearchBar 搜索数组

ios - 在 GoogleMapSDK 上放置标记

java - 尝试使用 for 循环打印形状时出现错误

java - 类的数组实例

iphone - 部署到真实设备时出现问题: The identity used to sign the executable is no longer valid

iphone - 在 UITableView 页脚中放置一个按钮,并使 UITableViewCell 不在页脚下方

ios - 移动网站无法在 IOS 11+ 上运行

mysql - 如何将 sqlite 中每个 session 的所有新值插入到同一行(适用于 iOS)