【发布时间】:2019-03-28 10:31:35
【问题描述】:
是否可以在 Java 中声明一个最大 48 位的固定宽度数据类型?
我需要找到一些存储 48 个连续位的方法。我尝试使用Byte 数组,但由于它是一个连续的数字,因此需要将其拆分,因此我看不出它是如何工作的,因为我需要严格固定这些值并且不超过 48 位长度.
【问题讨论】:
是否可以在 Java 中声明一个最大 48 位的固定宽度数据类型?
我需要找到一些存储 48 个连续位的方法。我尝试使用Byte 数组,但由于它是一个连续的数字,因此需要将其拆分,因此我看不出它是如何工作的,因为我需要严格固定这些值并且不超过 48 位长度.
【问题讨论】:
现代语言中的 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];
【讨论】: