二进制

来源:互联网 发布:手机淘宝帐号管理在哪 编辑:程序博客网 时间:2024/06/07 16:56

byte的二进制

public static boolean[] byte2BitArray(byte value){           boolean[] booleans = new boolean[Byte.SIZE];        for(int j=0;j<Byte.SIZE;j++){            booleans[j]=((value >> (Byte.SIZE-j-1)) & 0x1)==1?true:false;        }        return booleans;    }

二进制转Byte

public static byte bitArray2Byte(boolean[] value,int start){           byte result = 0x00;        if(start<value.length&&start+Byte.SIZE<value.length){            int i=start;                while(i-start<Byte.SIZE){                    if(value[i]){                        result|=(1<<(Byte.SIZE+start-i-1))&0xff;                    }                        i++;                }                return result;        }else{            throw new IndexOutOfBoundsException();        }    }

二进制转字节数组

public static byte[] bitArray2Bytes(boolean[] value,int start,int len){           byte[] result=null;        if((start+len)*Byte.SIZE<=value.length){            result=new byte[len];            for(int i=start;i<len;i++){                for(int j=0;j<Byte.SIZE;j++){                    if(value[(i+1)*Byte.SIZE-j-1]){                        result[i]|=(1<<j)&0xff;                    }                }                            }        }        return result;    }

字节数组的二进制

public static boolean[] bytes2BitArray(byte[] value){   boolean[] booleans = new boolean[value.length*Byte.SIZE];for(int i=0;i<value.length;i++){for(int j=0;j<Byte.SIZE;j++){booleans[(i+1)*Byte.SIZE-j-1]=(value[i]>>j& 0x1)==1;}}return booleans;}


字符串与二进制流相互转换

public static boolean[] str2BitArray(String value){   boolean[] booleans = new boolean[value.length()*Byte.SIZE];byte[] src = value.getBytes(); for(int i=0;i<src.length;i++){for(int j=0;j<Byte.SIZE;j++){booleans[(i+1)*Byte.SIZE-j-1]=((src[i] >> j) & 0x1)==1?true:false;}}return booleans;}public static String bitArray2Str(boolean[] booleans){ StringBuilder sb=new StringBuilder(); for(int i=0;i<booleans.length;i+=Byte.SIZE){ int result=0; for(int j=0;j<Byte.SIZE;j++){ result+=(booleans[i+Byte.SIZE-j-1]?1:0)<<j; } sb.append((char)result);}return sb.toString();}

int与Byte相互转换

public static byte[] int2Bytes(int value){    byte[] src = new byte[Integer.BYTES];   for(int i=0;i<Integer.BYTES;i++){  src[i]=(byte) ((value>>(8*(Integer.BYTES-i-1))) & 0xFF);  }  return src;}public static int bytes2Int(byte[] value){   int result=0;for(int i=0;i<Integer.BYTES;i++){result<<=8;result|=(value[i]&0xFF);}return result;}


long与byte互转

public static byte[] long2Bytes(long num) {      byte[] byteNum = new byte[Long.BYTES];      for (int i = 0; i < 8; ++i) {          byteNum[i] = (byte) ((num >> (Long.BYTES-i-1)*Byte.SIZE) & 0xff);      }      return byteNum; }   public static long bytes2Long(byte[] byteNum) {      long num = 0;      for (int i = 0; i < Long.BYTES; ++i) {          num <<= 8;          num |= (byteNum[i] & 0xff);      }      return num;  } 


0 0
原创粉丝点击