各种进制之间的转化

声明:本文章仅基于个人粗略整理总结,如有不足之处,欢迎指出。

1、16进制字符串改为byte
 

   public static byte[] HexString2Buf(String src) {
        int len = src.length();
        byte[] ret = new byte[len / 2 + 2];
        byte[] tmp = src.getBytes();
        for (int i = 0; i < len; i += 2) {
            ret[i / 2] = uniteBytes(tmp[i], tmp[i + 1]);
        }
        return ret;
    }

2、十六进制转2进制

方法一:

public static String hexStr2BinArr(String string) {
		// TODO Auto-generated method stub
		String s = "";
		for (int i = 0; i < string.length(); i++) {
			s += g(string.charAt(i));
		}
		return s;
	}

	private static String g(char charAt) {
		// TODO Auto-generated method stub
		switch (charAt) {
		case '0':
			return "0000";
		case '1':
			return "0001";
		case '2':
			return "0010";
		case '3':
			return "0011";
		case '4':
			return "0100";
		case '5':
			return "0101";
		case '6':
			return "0110";
		case '7':
			return "0111";
		case '8':
			return "1000";
		case '9':
			return "1001";
		case 'A':
			return "1010";
		case 'B':
			return "1011";
		case 'C':
			return "1100";
		case 'D':
			return "1101";
		case 'E':
			return "1110";
		case 'F':
			return "1111";

		}
		return null;
	}

方法二:

public static String hexString2binaryString(String hexString) {
		if (hexString == null || hexString.length() % 2 != 0)
			return null;
		String bString = "", tmp;
		for (int i = 0; i < hexString.length(); i++) {
			tmp = "0000" + Integer.toBinaryString(Integer.parseInt(hexString.substring(i, i + 1), 16));
			bString += tmp.substring(tmp.length() - 4);
		}
		return bString;
	}

3、十六进制转Ascii码

	public static String x16toString(String x16, String CharsetName) throws UnsupportedEncodingException {
		if (x16 == null || "".equals(x16.trim())) {
			return "";
		}
		String tempStr = "";
		byte[] b = new byte[x16.length() / 2];
		for (int i = 0; i < x16.length() / 2; i++) {
			tempStr = x16.substring(i * 2, i * 2 + 2);
			if (tempStr.equals("00")) {
				tempStr = "30";
			}
			int temp = Integer.parseInt(tempStr, 16);
			b[i] = (byte) temp;
		}
		String restr = new String(b, CharsetName);
		return restr;
	}

4、IEEE754浮点数的转换方法(十六进制String转浮点数)

String originalStrng="8FC20540";
Long a = Long.parseLong(originalStrng, 16);
Float a2 = Float.intBitsToFloat(a.intValue());

5、16进制byte数组转16进制String

	public static String getBufHexStr(byte[] raw) {
		if (raw == null) {
			return null;
		}
		final StringBuilder hex = new StringBuilder(2 * raw.length);
		for (final byte b : raw) {
			hex.append(HEXES.charAt((b & 0xF0) >> 4)).append(
					HEXES.charAt((b & 0x0F)));
		}
		return hex.toString();
	}

6、十进制转16进制,高位在前地位在后

public static String tenTohexString(Integer var0) {
		int var1 = 1;
		int var2 = var0 >> 8;
		int var3 = var0 & 255;
		String var4 = Integer.toHexString(var2);
		String var5 = Integer.toHexString(var3);
		if (var4.length() > 2) {
			do {
				if (var1 > 1) {
					var2 >>= 8;
				}
				var4 = Integer.toHexString(var2 >> 8);
				var5 = var5 + Integer.toHexString(var2 & 255);
				++var1;
			} while (var4.length() > 2);
		}
		if (var4.length() < 2) {
			var4 = "0" + var4;
		}
		if (var5.length() < 2) {
			var5 = "0" + var5;
		}
		return (var5 + var4).toUpperCase();

	}

	/**
	 * 
	* @Title: decToHex 
	* @Description: 十进制转16进制,高位在前低位在后 -方法二
	* @Author: 
	* @Version: V1.00 (版本号)
	* @CreateDate: 
	* @Parameters: @param dec
	* @Parameters: @return
	* @Return String
	* @Throws
	 */
	public static String decToHex(int dec){
	    String hex = "";
	    while(dec != 0) {
	        String h = Integer.toString(dec & 0xff, 16);
	        if((h.length() & 0x01) == 1)
	            h = '0' + h;
	        hex = hex + h;
	        dec = dec >> 8;
	    }
	    return hex.toUpperCase();//将小写字母转大写字母==》大写转小写.toLowerCase()
	}

6、十六进制转Ascii码

public static String x16toString(String x16, String CharsetName) throws UnsupportedEncodingException {
		if (x16 == null || "".equals(x16.trim())) {
			return "";
		}
		String tempStr = "";
		byte[] b = new byte[x16.length() / 2];
		for (int i = 0; i < x16.length() / 2; i++) {
			tempStr = x16.substring(i * 2, i * 2 + 2);
			if (tempStr.equals("00")) {
				tempStr = "30";
			}
			int temp = Integer.parseInt(tempStr, 16);
			b[i] = (byte) temp;
		}
		String restr = new String(b, CharsetName);
		return restr;
	}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值