在Java中,我可以使用Double.longBitsToDouble()
static
函數,但在Objective-C中我找不到這樣做的方法。如何將longbits轉換爲Objective-C中的double?
我該怎麼做?
在Java中,我可以使用Double.longBitsToDouble()
static
函數,但在Objective-C中我找不到這樣做的方法。如何將longbits轉換爲Objective-C中的double?
我該怎麼做?
我在Java中並沒有真正使用這種方法,但是簡單地將long long值設置爲double類型的變量有什麼問題?
無論平臺多長,long 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
方法this page借來的。
uint64_t bitPattern = whatever;// use this rather than long long because it is explicitly 64 bits
double doubleValue;
doubleValue = *(double*)&bitPattern;