有谁知道如何使c等效于Java的Float.intBitsToFloat方法?
https://www.cis.upenn.edu/~bcpierce/courses/629/jdkdocs/api/java.lang.Float.html#intBitsToFloat(int)
我找不到任何移植的例子。
答案 0 :(得分:1)
这source已经提供了一种方法
JNIEXPORT jfloat JNICALL
Java_java_lang_Float_intBitsToFloat(JNIEnv *env, jclass unused, jint v)
{
union {
int i;
float f;
} u;
u.i = (long)v;
return (jfloat)u.f;
}
因此,解决上述问题,你可以做到这一点。
union int_to_float_bits {
int32_t integer_bits;
float converted_float_bits;
};
float intBitsToFloat(int32_t int_value)
{
union int_to_float_bits bits;
bits.integer_bits = int_value;
return bits.converted_float_bits;
}
答案 1 :(得分:1)
我喜欢Ankur的想法。这是另一种方式(有点讨厌你):
#include <stdio.h>
int main() {
int v = 1090099610;
float *f = (float*)(&v);
printf("%E\n", *f);
return 0;
}
在jshell中:
jshell> Float.intBitsToFloat(1090099610)
$1 ==> 7.8