如何在Java中为变量分配2个字节?我知道我可以这样做:
byte val = 2; // this is one byte with 0000 0010
但我需要为val分配2个字节。我怎么能这样做?
答案 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支持,因此如果您与本机代码交互,则可以使用直接内存进行分配。