我在 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/