Iphone 如何将Objective-C中的长位转换为双位?

Iphone 如何将Objective-C中的长位转换为双位?,iphone,objective-c,Iphone,Objective C,在Java中,我可以使用Double.longBitsToDouble()静态函数,但在Objective-C中,我找不到这样做的方法 我怎么能得到它呢?我在Java中并没有太多地使用这个方法,但是简单地将long-long值设置为double类型的变量有什么错呢 无论平台如何,long都将是64位 如果需要,可以使用math.h中的isnan()检查double中的NaN。可以使用memcpy将位表示形式复制到double类型变量的地址中。我不确定这是否进入了未定义行为的领域 //assert

在Java中,我可以使用
Double.longBitsToDouble()
静态
函数,但在Objective-C中,我找不到这样做的方法


我怎么能得到它呢?

我在Java中并没有太多地使用这个方法,但是简单地将long-long值设置为double类型的变量有什么错呢

无论平台如何,long都将是64位


如果需要,可以使用math.h中的isnan()检查double中的NaN。

可以使用
memcpy
将位表示形式复制到
double
类型变量的地址中。我不确定这是否进入了未定义行为的领域

//assert(sizeof(double) == sizeof(unsigned long long));

unsigned long long bitPattern = 0x7ff0000000000000ULL;
double doubleValue;

memcpy(&doubleValue, &bitPattern, sizeof doubleValue);

//assert(isinf(doubleValue));
正无穷大的位模式是从中借来的,它似乎记录了
longBitsToDouble
方法

uint64_t bitPattern = whatever;// use this rather than long long because it is explicitly 64 bits
double  doubleValue;
doubleValue = *(double*)&bitPattern;