【问题标题】:How to declare 48-bit fixed-width data type in Java?如何在 Java 中声明 48 位固定宽度数据类型?
【发布时间】:2019-03-28 10:31:35
【问题描述】:

是否可以在 Java 中声明一个最大 48 位的固定宽度数据类型? 我需要找到一些存储 48 个连续位的方法。我尝试使用Byte 数组,但由于它是一个连续的数字,因此需要将其拆分,因此我看不出它是如何工作的,因为我需要严格固定这些值并且不超过 48 位长度.

【问题讨论】:

    标签: java types


    【解决方案1】:

    现代语言中的 AFAIK 没有 48 位数据类型。您只能将其声明为字节或短数组。

    byte db[size*6];
    short ds[size*3];
    

    每个 48 字节元素可以通过 6 个连续字节(3 个连续短)访问。数组的索引可以很容易地从 48 字节的组索引中计算出来

    long b[i] = db[i*6] << 40 | db[i*6+1] << 32 | db[i*6+2] << 24 |
                db[i*6+3] << 16 | db[i*6+4] << 8 | db[i*6+5];
    long c[i] = ds[i*3] << 32 | db[i*3+1] << 16 | db[i*3+2];
    

    48 字节索引也可以从字节/短数组索引中计算出来。 db[i] 将是 i / 6th 48 位整数的 i % 6th 字节。

    或者您可以声明一类字节/短片以便更方便地访问

    class my6bytes {
        byte d[6];
    }
    
    my6bytes d6b[size];
    
    class my3shorts {
        short s[3];
    }
    
    my3shorts d3s[size];
    

    【讨论】:

    • 很遗憾 OP 没有费心检查这个答案,因为你已经完全这样做了。好的、清晰、直接的答案,可以灵活地用于多种解决方案(包括我自己的一个,非常感谢!)
    • @BenjaminR 我从来没有意识到这首先得到了回答。我可能错过了通知,所以我很抱歉。无论如何,我不在乎这个问题,因为它在我提出问题 2 年后得到了回答。完全忘记了我问的上下文。
    • @Setafire 我确切地知道这是怎么发生的。 “可耻”可能对我有点苛刻,我只是觉得如果它得到了回答,OP有责任将其标记为如此。我觉得它清楚地回答了问题的文字,不是吗?
    • @BenjaminR 是的。
    猜你喜欢
    • 2011-07-31
    • 2014-06-23
    • 1970-01-01
    • 2020-02-05
    • 1970-01-01
    • 2017-04-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多