字符、字节、位转换常用工具类收集


  • 位转字节

解释:什么叫位转字节
一个字节由8位组成,十进制8,转二进制则为1000 0000,位转字节就是把1000 0000 转成8,并且用字节表示

 public static byte BitToByte(String byteStr) {
        int re, len;
        if (null == byteStr) {
            return 0;
        }
        len = byteStr.length();
        if (len != 4 && len != 8) {
            return 0;
        }
        if (len == 8) {// 8 bit处理
            if (byteStr.charAt(0) == '0') {// 正数
                re = Integer.parseInt(byteStr, 2);
            } else {// 负数
                re = Integer.parseInt(byteStr, 2) - 256;
            }
        } else {//4 bit处理
            re = Integer.parseInt(byteStr, 2);
        }
        return (byte) re;
    }

字节数组转十六进制字符串

   //**不带分隔符*/
   public static String parseByte2HexStr(byte buf[]) {
        StringBuffer sb = new StringBuffer();
        for (int i = 0; i < buf.length; i++) {
            String hex = Integer.toHexString(buf[i] & 0xFF);
            if (hex.length() == 1) {
                hex = '0' + hex;
            }
            sb.append(hex.toUpperCase());
        }
        return sb.toString();

    }
    
  //**带分隔符*/
    public static String byte2HexStr(byte[] b, String fen) {
        String stmp = "";
        StringBuilder sb = new StringBuilder("");
        for (int n = 0; n < b.length; n++) {
            stmp = Integer.toHexString(b[n] & 0xFF);
            sb.append((stmp.length() == 1) ? "0" + stmp : stmp);
            sb.append(fen);
        }
        return sb.toString().toUpperCase().trim();
    }

int类型转二进制字符串

private String getIntTo2Byte(int i){
    String data = Integer.toBinaryString(i);
    if (data.length() < 2){
        data = "0" +data;
    }else if (data.length() > 2){
        data = "0";
    }
        return data;
}

/**将16进制转换为二进制
* @param hexStr
* @return
* 串口通信必须用二进制通信
*/

public static byte[] parseHexStr2Byte(String hexStr) {  

		if (hexStr.length() < 1)  

			return null;  

		byte[] result = new byte[hexStr.length()/2];  

		for (int i = 0;i< hexStr.length()/2; i++) {  

			int high = Integer.parseInt(hexStr.substring(i*2, i*2+1), 16);  

			int low = Integer.parseInt(hexStr.substring(i*2+1, i*2+2), 16);  

			result[i] = (byte) (high * 16 + low);  

		}  

		return result;  
	}  

//*************************** 分割线 ***************************/
/

* bytes转换成十六进制字符串
*
* @param b byte数组 fen
* @return String 每个Byte值之间空格分隔
*/

public static String byte2HexStr(byte[] b, String fen)
	{
		String stmp = "";
		StringBuilder sb = new StringBuilder("");
		for (int n = 0; n < b.length; n++)
		{
			stmp = Integer.toHexString(b[n] & 0xFF);
			sb.append((stmp.length() == 1) ? "0" + stmp : stmp);
			sb.append(fen);
		}
		return sb.toString().toUpperCase().trim();
	}

猜你喜欢

转载自blog.csdn.net/DeadlyMouse/article/details/84589774