public byte[] int2byte(int data){
byte b4 = (byte)((data)>>24);
byte b3 = (byte)(((data)<<8)>>24);
byte b2= (byte)(((data)<<16)>>24);
byte b1 = (byte)(((data)<<24)>>24);
byte[] bytes = {b1,b2,b3,b4};
return bytes;
}
public int byte2int(byte b[]) {
int b3 = b[3] & 0xff;
int b2 = b[2] & 0xff;
int b1 = b[1] & 0xff;
int b0 = b[0] & 0xff;
int i = b3 << 24 | b2 << 16 | b1 << 8 | b0;
return i;
}
8个0或1组成的String与byte转换思路:
暂时想到的是String每个元素变为char,char-48变成byte,8个byte位移变成byte
下面是8个byte(0或1)位移变为1个byte的方法:
/**
* 8个0或1的int转换为byte
*
* @return 8个0与1拼成的一个byte
*/
public byte arr2byte(byte arr[]) {
byte b = 0;
for (int i = 0; i < arr.length; i++) {
b |= (byte) (arr[i] << 7 - i);
}
return b;
}
将byte转为01串也是类似的,依次取出byte的第1到8为拼成串。
public String byte2String(byte b) {
String s = "";
for (int i = 0; i < 8; i++) {
byte temp = (byte) ((byte) (b >> 7 - i) & 1);
s += temp;
}
return s;
}
引用 人生难得糊涂的话解释为什么&1(纠结了一下午)
比如说2 的二进制是00000010
右移7位是00000000 结果为 0 是第八位
右移6位是00000000 结果为 0 是第7位
。。。。
右移1位是 00000001 结果为1 是第2位
右移0位是 00000010 我们要的结果是最后一个0 但是现在他的值是2 那怎么取到最后一个0呢 只要&一个1 就可以了
右移6位是00000000 结果为 0 是第7位
。。。。
右移1位是 00000001 结果为1 是第2位
右移0位是 00000010 我们要的结果是最后一个0 但是现在他的值是2 那怎么取到最后一个0呢 只要&一个1 就可以了