十进制跟十六进制转换

package Test0703;

/**
 * @author benjaminwan
 *数据转换工具
 */
public class MyFunc {

	/**
    * 将整型数字转换为二进制字符串,不舍弃前面的0
 	* @param number 整型数字
	 * @param bits 位数
 	* @return 二进制字符串
 	*/
	public static String getSimpleBinString(int number,int bits) {
		StringBuilder sBuilder = new StringBuilder();
		for (int i = 0; i < bits; i++){
			sBuilder.append(number & 1);
			number = number >>> 1;
		}
		return sBuilder.reverse().toString();
	 }
	//-------------------------------------------------------
	// 判断奇数或偶数,位运算,最后一位是1则为奇数,为0是偶数
	static public int isOdd(int num)
	{
		return num & 0x1;
	}
	//-------------------------------------------------------
	static public int HexToInt(String inHex)//Hex字符串转int
	{
		return Integer.parseInt(inHex, 16);
	}
	//-------------------------------------------------------
	static public byte HexToByte(String inHex)//Hex字符串转byte
	{
		return (byte)Integer.parseInt(inHex,16);
	}
	//-------------------------------------------------------
	static public String Byte2Hex(Byte inByte)//1字节转2个Hex字符
	{
		return String.format("%02X", inByte).toUpperCase();
	}
	//-------------------------------------------------------
	//十进制转十六进制
	static public String ByteArrToHex(byte[] inBytArr)//字节数组转转hex字符串
	{
		StringBuilder strBuilder=new StringBuilder();
		int j=inBytArr.length;
		for (int i = 0; i < j; i++)
		{
			strBuilder.append(Byte2Hex(inBytArr[i]));
			strBuilder.append(" ");
		}
		return strBuilder.toString();
	}
	//-------------------------------------------------------
	static public String ByteArrToHex(byte[] inBytArr,int offset,int byteCount)//字节数组转转hex字符串,可选长度
	{
		StringBuilder strBuilder=new StringBuilder();
		int j=byteCount;
		for (int i = offset; i < j; i++)
		{
			strBuilder.append(Byte2Hex(inBytArr[i]));
		}
		return strBuilder.toString();
	}
	//-------------------------------------------------------
	//转hex字符串转字节数组
	//十六进制转成十进制
	static public byte[] HexToByteArr(String inHex)//hex字符串转字节数组
	{
		int hexlen = inHex.length();
		byte[] result;
		if (isOdd(hexlen)==1)
		{//奇数
			hexlen++;
			result = new byte[(hexlen/2)];
			inHex="0"+inHex;
		}else {//偶数
			result = new byte[(hexlen/2)];
		}
		int j=0;
		for (int i = 0; i < hexlen; i+=2)
		{
			result[j]=HexToByte(inHex.substring(i,i+2));
			j++;
		}
		return result;
	}
	 
	//十六进制相加校验
	 public static String makeChecksum(String data) {
	  if (data == null || data.equals("")) {
	   return "";
	  }
	  int total = 0;
	  int len = data.length();
	  int num = 0;
	  while (num < len) {
	   String s = data.substring(num, num + 2);
	   System.out.println(s);
	   total += Integer.parseInt(s, 16);
	   num = num + 2;
	  }
	  /**
	   * 用256求余最大是255,即16进制的FF
	   */
	  int mod = total % 256 +1;
	  String hex = Integer.toHexString(mod);
	  len = hex.length();
	  // 如果不够校验位的长度,补0,这里用的是两位校验
	  if (len < 2) {
	   hex = "0" + hex;
	  }
	  return hex;
	 }
	 
	 //二进制转换成十进制
	    public  static  Integer Biannary2Decimal(int bi){
	        String binStr = bi+"";
	        Integer sum = 0;
	        int len = binStr.length();
	        for (int i=1;i<=len;i++){
	            //第i位 的数字为:
	            int dt = Integer.parseInt(binStr.substring(i-1,i));
	            sum+=(int)Math.pow(2,len-i)*dt;
	        }
	        return  sum;
	    }
	    
	 //十进制转换成二进制
	    public static String Decimal2Binary(int de){
	        String numstr = "";
	        while (de>0){
	        int res = de%2; //除2 取余数作为二进制数
	        numstr = res + numstr;
	        de = de/2;
	        }
	        return  numstr;
	    }

	 
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值