|  |  | 
 |  |  | package com.zy.asrs.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; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  | } | 
 |  |  | package com.zy.asrs.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;
 | 
 |  |  |     }
 | 
 |  |  | 
 | 
 |  |  | }
 |