【问题标题】:Visual Basic single data type in javajava中的Visual Basic单一数据类型
【发布时间】:2016-05-30 17:55:31
【问题描述】:

几年前我写了一个 VB 程序。为了学习 Java,我用 Java 重写了它。我有想要转换的档案数据,所以我可以在我的 Java 程序中读取它。

我一直在研究数据类型表示以找出一些转换,但主要是由于我对 Java 的陌生和远离 VB 的时间而遇到了障碍。

我在 VB 中有一个字段是单一的,并且是 69.7(内部表示为 x'66668A42'。对于我的生活,我无法弄清楚这个内部表示。但是,我该如何将其转换为 Java 可以理解的内容(double)?

【问题讨论】:

    标签: java vb.net type-conversion


    【解决方案1】:

    0x66668A42 是浮点值 69.2 的小端表示

    它可能是小端,因为那是原生 x86 格式。相比之下,java 将所有内容都定义为大端,即使底层平台不是。

    所以要将您的 VB 单转换为 java 浮点,您必须将字节打乱为相反的顺序,然后将 int 转换为浮点:

    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);
        }
    
    }
    

    【讨论】:

    • 我读过那些字节序的东西,但不明白。我不明白你的解决方案,但它有效。稍微研究一下就明白了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-16
    • 2011-11-18
    • 2015-04-23
    • 2021-02-14
    相关资源
    最近更新 更多