package com.vincent.rsf.framework.common; 
 | 
  
 | 
import java.io.UnsupportedEncodingException; 
 | 
import java.nio.charset.Charset; 
 | 
  
 | 
/** 
 | 
 * radix tools 
 | 
 * Created by vincent on 2018/10/6 
 | 
 */ 
 | 
public class RadixTools { 
 | 
  
 | 
    public static void main(String[] args) { 
 | 
        String s = RadixTools.toBinaryString((byte) 1); 
 | 
        System.out.println(s); 
 | 
        for(int i=s.length()-1;i>=0;i--){ 
 | 
            char c=s.charAt(i); 
 | 
            if (i == 7 && c =='1'){ 
 | 
                System.out.println("==="); 
 | 
            } 
 | 
        } 
 | 
    } 
 | 
  
 | 
    /************************************** BinaryString **********************************************/ 
 | 
  
 | 
    public static String toBinaryString(byte b){ 
 | 
        return Long.toBinaryString((b & 0xFF) + 0x100).substring(1); 
 | 
    } 
 | 
  
 | 
    public static String toBinaryString(byte[] bytes){ 
 | 
        StringBuilder sb = new StringBuilder(); 
 | 
        for (byte aByte : bytes) { 
 | 
            sb.append(Long.toBinaryString((aByte & 0xFF) + 0x100).substring(1)); 
 | 
        } 
 | 
        return sb.toString(); 
 | 
    } 
 | 
  
 | 
    /************************************** HexString **********************************************/ 
 | 
  
 | 
    public static byte[] hexStringToBytes(String hexString) { 
 | 
        if (hexString == null || hexString.equals("")) { 
 | 
            return null; 
 | 
        } 
 | 
        hexString = hexString.toUpperCase(); 
 | 
        int length = hexString.length() / 2; 
 | 
        char[] hexChars = hexString.toCharArray(); 
 | 
        byte[] d = new byte[length]; 
 | 
        for (int i = 0; i < length; i++) { 
 | 
            int pos = i * 2; 
 | 
            d[i] = (byte) (charToByte(hexChars[pos]) << 4 | charToByte(hexChars[pos + 1])); 
 | 
        } 
 | 
        return d; 
 | 
    } 
 | 
  
 | 
    public static String bytesToHexStr(byte[] bytes){ 
 | 
        StringBuilder buf = new StringBuilder(bytes.length * 2); 
 | 
        for(byte b : bytes) { 
 | 
            buf.append(String.format("%02x", b & 0xff)); 
 | 
        } 
 | 
  
 | 
        return buf.toString(); 
 | 
    } 
 | 
  
 | 
    private static byte charToByte(char c) { 
 | 
        return (byte) "0123456789ABCDEF".indexOf(c); 
 | 
    } 
 | 
  
 | 
  
 | 
    /************************************** String **********************************************/ 
 | 
  
 | 
    public static String bytesToStr(byte[] bytes){ 
 | 
        return bytesToStr(bytes, Charset.forName("gbk")); 
 | 
    } 
 | 
  
 | 
    public static String bytesToStr(byte[] bytes, Charset charset){ 
 | 
        return new String(bytes, charset).trim().toUpperCase(); 
 | 
    } 
 | 
  
 | 
    public static byte[] strToBytes(String str) throws UnsupportedEncodingException { 
 | 
        return str.getBytes("gbk"); 
 | 
    } 
 | 
  
 | 
    /************************************** long **********************************************/ 
 | 
  
 | 
    public static byte[] longToBytes(long number) { 
 | 
        long temp = number; 
 | 
        byte[] b = new byte[8]; 
 | 
        for (int i = 0; i < b.length; i++) { 
 | 
            b[i] = new Long(temp & 0xff).byteValue();// 将最低位保存在最低位 
 | 
            temp = temp >> 8; // 向右移8位 
 | 
        } 
 | 
        return b; 
 | 
    } 
 | 
  
 | 
    public static long bytesToLong(byte[] bytes) { 
 | 
        long s = 0; 
 | 
        long s0 = bytes[0] & 0xff;// 最低位 
 | 
        long s1 = bytes[1] & 0xff; 
 | 
        long s2 = bytes[2] & 0xff; 
 | 
        long s3 = bytes[3] & 0xff; 
 | 
        long s4 = bytes[4] & 0xff;// 最低位 
 | 
        long s5 = bytes[5] & 0xff; 
 | 
        long s6 = bytes[6] & 0xff; 
 | 
        long s7 = bytes[7] & 0xff; 
 | 
  
 | 
        // s0不变 
 | 
        s1 <<= 8; 
 | 
        s2 <<= 16; 
 | 
        s3 <<= 24; 
 | 
        s4 <<= 8 * 4; 
 | 
        s5 <<= 8 * 5; 
 | 
        s6 <<= 8 * 6; 
 | 
        s7 <<= 8 * 7; 
 | 
        s = s0 | s1 | s2 | s3 | s4 | s5 | s6 | s7; 
 | 
        return s; 
 | 
    } 
 | 
  
 | 
  
 | 
    /************************************** int **********************************************/ 
 | 
  
 | 
    public static byte[] intToBytes(int n) { 
 | 
        byte[] b = new byte[4]; 
 | 
        b[3] = (byte) (n & 0xff); 
 | 
        b[2] = (byte) (n >> 8 & 0xff); 
 | 
        b[1] = (byte) (n >> 16 & 0xff); 
 | 
        b[0] = (byte) (n >> 24 & 0xff); 
 | 
        return b; 
 | 
    } 
 | 
  
 | 
  
 | 
    public static int bytesToInt(byte[] b) { 
 | 
        int s = 0; 
 | 
        int s0 = b[0] & 0xff;// 最低位 
 | 
        int s1 = b[1] & 0xff; 
 | 
        int s2 = b[2] & 0xff; 
 | 
        int s3 = b[3] & 0xff; 
 | 
        s0 <<= 24; 
 | 
        s1 <<= 16; 
 | 
        s2 <<= 8; 
 | 
        s = s0 | s1 | s2 | s3; 
 | 
        return s; 
 | 
    } 
 | 
  
 | 
    /************************************** short **********************************************/ 
 | 
  
 | 
    public static short byteToShort(byte[] b) { 
 | 
        short s = 0; 
 | 
        short s0 = (short) (b[1] & 0xff);// 最低位 
 | 
        short s1 = (short) (b[0] & 0xff); 
 | 
        s1 <<= 8; 
 | 
        s = (short) (s0 | s1); 
 | 
        return s; 
 | 
    } 
 | 
  
 | 
    public static byte[] shortToByte(short s){ 
 | 
        byte[] b = new byte[2]; 
 | 
        for(int i = 0; i < 2; i++){ 
 | 
            int offset = 16 - (i+1)*8; //因为byte占4个字节,所以要计算偏移量 
 | 
            b[i] = (byte)((s >> offset)&0xff); //把16位分为2个8位进行分别存储 
 | 
        } 
 | 
        return b; 
 | 
    } 
 | 
  
 | 
} 
 |