Obj C相当于Double.doubleToLongBits

Jim*_*ann 0 java objective-c bytecode-manipulation

我正在将一些Java代码移植到Objective C并且知道得足以让人头疼.有人能指出我对等于Double.doubleToLongBits和Float.floatToIntBits的objC吗?

Ste*_*non 5

正如荷荷巴指出的那样,long并不能保证64位宽(尽管他说错32位 - long在64位平台上的Objective-C是64位宽).也就是说,我会使用实际的固定宽度类型而不是long long.

#include <stdint.h>

uint64_t doubleToBits(double x) {
    const union { double f; uint64_t i; } xUnion = { .f = x };
    return xUnion.i;
}

uint32_t floatToBits(float x) {
    const union { float f; uint32_t i; } xUnion = { .f = x };
    return xUnion.i;
}
Run Code Online (Sandbox Code Playgroud)