几年前我写了一个VB程序。为了学习Java,我用Java重写了它。我有我想要转换的档案数据,所以我可以在我的Java程序中阅读它。
我一直在研究数据类型表示以找出一些转换,但主要是由于我对Java的新意和远离VB的时间而陷入困境。
我在VB中有一个单独的字段,并且 69.7 (在内部表示为x'66668A42'。对于我的生活,我无法弄清楚这个内部表示。但是,我该怎么做把它转换成Java可以理解的东西(双重)?
答案 0 :(得分:0)
0x66668A42是浮点值69.2
的小端表示它可能是小端,因为它是原生的x86格式。相比之下,java将所有内容定义为大端,即使底层平台不是。
因此,要将VB单个转换为java浮点数,必须将字节转换为相反的顺序,然后将int转换为float:
public class L2BFloat {
public static void main(String[] argv) {
int x = 0x66668A42;
System.out.println(little2Big2Float(x));
}
public static float little2Big2Float(int little) {
// int endian conversion
int big = (little & 0x000000FF) << 24
| (little & 0x0000FF00) << 8
| (little & 0x00FF0000) >>> 8
| (little & 0xFF000000) >>> 24;
// convert to float
return Float.intBitsToFloat(big);
}
}