Iphone 如何将Objective-C中的长位转换为双位?
在Java中,我可以使用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
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;