如何在Java中为变量分配2个字节?

时间:2009-07-08 13:29:08

标签: java

如何在Java中为变量分配2个字节?我知道我可以这样做:

byte val = 2; // this is one byte with 0000 0010

但我需要为val分配2个字节。我怎么能这样做?

7 个答案:

答案 0 :(得分:8)

除了使用两个字节的数组外,还可以使用short guaranteed by the Java language spec to be 16 bits wide

short x = 0x1234s; // assigns 0x34 to the lower byte, 0x12 to the higher byte.

如果你有两个字节想要组合成一个短片,你需要 将高字节移位8位并将它们按位或:

组合
byte b1 = 0x12;
byte b2 = 0x34;
short x = ((short)b1 << 8) | b2;

如果要为单个字节变量分配不同的,那么也可以使用右移和按位或运算符。比特n由(1

byte b = (1<<3)|(1<<2); // b is set to 0000 1100

答案 1 :(得分:3)

您在寻找长度为2的字节数组吗?在这种情况下:

byte[] val = new byte[2];
val[0] = 2;
val[1] = something else;

答案 2 :(得分:2)

您可以使用XOR :)在一个字段中存储两个值

byte a, b, c;
a = 5;
b = 16;

c = a ^ b;

...

byte temp_a, temp_b;
temp_a = c ^ 16; /* temp_a == 5 */
temp_b = c ^ 5;  /* temp_b == 16 */

正如您可能已经注意到的那样,您需要一个原始值来检索另一个,因此这种技术并不像建议的位移方法那样有用。

答案 3 :(得分:1)

byte[] bytes = new byte[2];
bytes[0] = 2;
bytes[0] = 26;

答案 4 :(得分:1)

使用字节数组,(短)整数或BitSet

答案 5 :(得分:0)

您是在谈论分配2个字节还是2个位?

byte b = 5; //0000 0101

您可能还想尝试http://java.sun.com/j2se/1.4.2/docs/api/java/util/BitSet.html

答案 6 :(得分:0)

您可能想看一下Javolution的Struct类。 http://javolution.org/target/site/apidocs/javolution/io/Struct.html

它允许您布置具有固定长度成员和特定内存对齐的结构。该实现由ByteBuffer支持,因此如果您与本机代码交互,则可以使用直接内存进行分配。