`

int与byte转换,String(01)与byte转换

    博客分类:
  • Java
 
阅读更多
	
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 就可以了
1
1
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics