zoukankan      html  css  js  c++  java
  • 进制转换工具类

    
    
    import java.io.UnsupportedEncodingException;
    import java.util.Date;
    
    public final class Convert {
    	private final static byte[] hex = "0123456789ABCDEF".getBytes();
    
    	/**
    	 * 字节数组转换到十六进制字符串
    	 * 
    	 * @param bytes
    	 *            {@link Byte}字节数组
    	 * @return {@link String} 十六进制字符串
    	 */
    	public static String bytesToHexString(byte[] bytes) {
    		byte[] buff = new byte[2 * bytes.length];
    		for (int i = 0, length = bytes.length; i < length; i++) {
    			buff[2 * i] = hex[(bytes[i] >> 4) & 0x0f];
    			buff[2 * i + 1] = hex[bytes[i] & 0x0f];
    		}
    		return new String(buff);
    	}
    
    	/**
    	 * 十六进制字符串转换到字节数组
    	 * 
    	 * @param hexstr
    	 *            {@link String} 十六进制字符串
    	 * @return {@link Byte}[]字节数组
    	 */
    	public static byte[] hexStringToBytes(String hexstr) {
    		byte[] b = new byte[hexstr.length() / 2];
    		int j = 0;
    		for (int i = 0, length = b.length; i < length; i++) {
    			char c0 = hexstr.charAt(j++);
    			char c1 = hexstr.charAt(j++);
    			b[i] = (byte) ((parse(c0) << 4) | parse(c1));
    		}
    		return b;
    	}
    
    	private static int parse(char c) {
    		if (c >= 'a')
    			return (c - 'a' + 10) & 0x0f;
    		if (c >= 'A')
    			return (c - 'A' + 10) & 0x0f;
    		return (c - '0') & 0x0f;
    	}
    
    	/**
    	 * 十进制转十六进制
    	 * 
    	 * @param number
    	 *            int 十进制
    	 * @param x
    	 *            int 位数
    	 * @return
    	 */
    	public static String decimalToHexadecimal(long number, int x) {
    		String hex = Long.toHexString(number).toUpperCase();
    		return preFillZero(hex, x);
    	}
    
    	/**
    	 * 前面填充0
    	 * 
    	 * @param text
    	 *            {@link Object} 需要补0的对象
    	 * @param length
    	 *            {@link Integer} 补0后的长度
    	 * @return {@link String}
    	 */
    	public static String preFillZero(Object text, int length) {
    		StringBuilder builder = new StringBuilder(length);
    		if (text == null) {
    			for (int i = 0; i < length; i++)
    				builder.append("0");
    		} else {
    			for (int i = String.valueOf(text).length(); i < length; i++) {
    				builder.append("0");
    			}
    			builder.append(text);
    		}
    		return builder.toString();
    	}
    	
    	
    	/**
    	 * 后面填充0
    	 * 
    	 * @param text
    	 *            {@link Object} 需要补0的对象
    	 * @param length
    	 *            {@link Integer} 补0后的长度
    	 * @return {@link String}
    	 */
    	public static String sufFillZero(Object text, int length) {
    		StringBuilder builder = new StringBuilder(length);
    		if (text == null) {
    			for (int i = 0; i < length; i++)
    				builder.append("0");
    		} else {
    			builder.append(text);
    			for (int i = String.valueOf(text).length(); i < length; i++) {
    				builder.append("0");
    			}
    		}
    		return builder.toString();
    	}
    	
    	/**
    	 * 整形转字节
    	 * 
    	 * @param number
    	 * @param size
    	 * 
    	 * @return
    	 */
    	public static byte[] longTobytes(long number, int size) {
    		byte[] b = new byte[size];
    		for (int i = 0; i < size; i++) {
    			b[i] = (byte) (number >> 8 * (size - i - 1) & 0xFF);
    		}
    		return b;
    	}
    
    	/**
    	 * 字节转整形<br>
    	 * 最大支持4字节
    	 * 
    	 * @param bytes
    	 * @param size
    	 * @return
    	 */
    	public static long byte2Long(byte[] bytes, int size) {
    		long intValue = 0;
    		for (int i = 0; i < bytes.length; i++) {
    			intValue += (bytes[i] & 0xFF) << (8 * (size - i - 1));
    		}
    		return intValue;
    	}
    
    	public static int byte2Int(byte[] bytes, int size) {
    		int intValue = 0;
    		for (int i = 0; i < bytes.length; i++) {
    			intValue += (bytes[i] & 0xFF) << (8 * (size - i - 1));
    		}
    		return intValue;
    	}
    
    	/**
    	 * 整形转字节
    	 * 
    	 * @param number
    	 * @param size
    	 * 
    	 * @return
    	 */
    	public static byte[] intTobytes(int number, int size) {
    		byte[] b = new byte[size];
    		for (int i = 0; i < size; i++) {
    			b[i] = (byte) (number >> 8 * (size - i - 1) & 0xFF);
    		}
    		return b;
    	}
    	
    	public static String mixStr2Hex(String str) {
    		byte[] bytes = null;
    		try {
    			bytes = str.getBytes("GBK");
    		} catch (UnsupportedEncodingException e) {
    			e.printStackTrace();
    		}
    		StringBuilder sb = new StringBuilder(bytes.length * 2);
    		for (int i = 0; i < bytes.length; i++) {
    			sb.append("0123456789ABCDEF".charAt((bytes[i] & 0xf0) >> 4));
    			sb.append("0123456789ABCDEF".charAt((bytes[i] & 0x0f) >> 0));
    		}
    		return sb.toString();
    	}
    	public static void main(String[] args) {
    //		try {
    //			System.err.println(new String(Convert.hexStringToBytes("24263131383131324D554C4C494E4B2A4936312E3133322E3232312E352A422A5032313030302A53312A"),"GBK"));
    //		} catch (UnsupportedEncodingException e) {
    //			// TODO Auto-generated catch block
    //			e.printStackTrace();
    //		}
    		byte[] dateTimeByteArray = getDateTimeByteArray();
    		
    	}
    	
    	
    	public static byte[] getDateTimeByteArray() {
    		byte[] data2 = new byte[6];
    		
    		Date date = new Date();
    		int year = date.getYear()-100;
    		int month = date.getMonth()+1;
    		int date2 = date.getDate();
    		int hours = date.getHours();
    		int minutes = date.getMinutes();
    		int seconds = date.getSeconds();
    		
    		
    		ArraysUtils.arrayappend(data2, 0, Convert.intTobytes(year, 1));
    		ArraysUtils.arrayappend(data2, 1, Convert.intTobytes(month, 1));
    		ArraysUtils.arrayappend(data2, 2, Convert.intTobytes(date2, 1));
    		ArraysUtils.arrayappend(data2, 3, Convert.intTobytes(hours, 1));
    		ArraysUtils.arrayappend(data2, 4, Convert.intTobytes(minutes, 1));
    		ArraysUtils.arrayappend(data2, 5, Convert.intTobytes(seconds, 1));
    		
    		
    		return data2;
    	}
    	
    	
    	
    	//获取 整数 num 的第 i 位的值
        private static boolean getBit(int num, int i)
        {
            return ((num & (1 << i)) != 0);//true 表示第i位为1,否则为0
        }
        
        //将 整数 num 的第 i 位的值 置为 1
        private static int setBit(int num, int i)
        {
            return (num | (1 << i));
        }
        
        
         //将 整数 num 的第 i 位的值 置为 1
        private static int setBitTo1(int num, int i)
        {
           int mask = ~(1 << i);//000100
           return (num & (mask));//111011
        }
        
        
    }
    
  • 相关阅读:
    我的世界-大堆网易账号免费送!!
    P1016 旅行家的预算
    P1015 回文数
    P1014 Cantor表
    P1013 进制位
    谷歌浏览器插件分享-tampermonkey油猴
    C++逐字输出函数
    P1012 拼数
    Windows下Nginx的启动、停止等命令
    遇到REMOTE HOST IDENTIFICATION HAS CHANGED怎么办?
  • 原文地址:https://www.cnblogs.com/liclBlog/p/15349563.html
Copyright © 2011-2022 走看看