如何在Java中为变量分配2个字节?
如何在Java中为变量分配2个字节? 我知道我可以这样做:
byte val = 2; // this is one byte with 0000 0010
但我需要为val分配2个字节。 我怎样才能做到这一点?
除了使用两个字节的数组之外,您还可以使用short,这由Java语言规范保证为16位宽 。
short x = 0x1234s; // assigns 0x34 to the lower byte, 0x12 to the higher byte.
如果要将两个字节组合成一个short,则需要将高位字节移位8位并将它们按位或组合:
byte b1 = 0x12; byte b2 = 0x34; short x = ((short)b1 << 8) | b2;
如果要将不同的位分配给单个字节变量,那么也可以使用右移和按位或运算符。 位n由(1 << n)标识。 0是字节的第一位,7是最后一位。 所以设置两位就像这样:
byte b = (1<<3)|(1<<2); // b is set to 0000 1100
你在寻找长度为2的字节数组吗? 在这种情况下:
byte[] val = new byte[2]; val[0] = 2; val[1] = something else;
您可以使用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 */
您可能已经注意到,您需要其中一个原始值来检索另一个,因此这种技术并不像位移方法那样有用。
byte[] bytes = new byte[2]; bytes[0] = 2; bytes[0] = 26;
使用字节数组,(短)整数或BitSet 。
你在谈论分配2个字节还是2个比特?
byte b = 5; //0000 0101
您可能还想尝试http://java.sun.com/j2se/1.4.2/docs/api/java/util/BitSet.html
您可能想看看Javolution的Struct类。 http://javolution.org/target/site/apidocs/javolution/io/Struct.html
它允许您布置具有固定长度成员和特定内存对齐的结构。 该实现由ByteBuffer支持,因此如果您与本机代码交互,则可以使用直接内存来分配它。