如何转换成字节位?

我有一个字节数组。 我要访问的每个字节的和想要的(8位)的等效二进制值,以便进行下一个操作就可以了。 我听说位集合的,但有没有处理这个问题的任何其他方式?

谢谢。

--------------解决方案-------------

byte ar[] ;
byte b = ar[0];//you have 8 bits value here,if I understood your Question correctly :)

如果你只需要它的字符串表示的二进制文件,你可以简单地使用Integer.toString()的第二个可选参数设置为2,二进制文件。

要执行一般的位操作上的任何整数类型,你必须使用逻辑和位移操作符提升。

// tests if bit is set in value
boolean isSet(byte value, int bit){
return (value&(1<<bit))!=0;
}

// returns a byte with the required bit set
byte set(byte value, int bit){
return value|(1<<bit);
}

BitSet.valueOf(byte []的字节)

你可能有,如果你不使用的Java 7看看源代码,它是如何实现的

您可能会发现沿着你要找的番石榴基元包什么东西线。

或者,你可能要编写类似

public boolean[] convert(byte...bs) {
boolean[] result = new boolean[Byte.SIZE*bs.length];
int offset = 0;
for (byte b : bs) {
for (int i=0; i<Byte.SIZE; i++) result[i+offset] = (b >> i & 0x1) != 0x0;
offset+=Byte.SIZE;
}
return result;
}

这是没有测试,但这个想法是存在的。 也有容易修改环路/分配返回别的东西(比方说,一个数组intlong )。

Java有bitwise operators 。 参见教程的例子。

Java编程语言还提供了对整数类型进行按位和移位运算符。 在本节讨论的运营商都不太常用。 因此,其覆盖面是短暂的; 目的是简单地让你知道,这些运营商存在。

一元位元补操作符“〜”反转位模式; 它可以被应用到任何的整数类型,使每一个“0”的“1”和每一个“1”,“0”。 例如,一个字节包含8位; 应用此运营商的值的位模式为“00000000”将改变其模式为“11111111”。

一个byte值是不可分割的,可以使用屏蔽操作校验位的状态。 所述至少显著比特对应于掩模10x1下位对应于0x2

byte b = 3;
if((b & 0x1) == 0x1) {
// LSB is on
} else {
// LSB is off
}

分类:java的 时间:2015-03-15 人气:0
本文关键词: java的
分享到:

相关文章

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 0.435 (s). 10 q(s)