進制轉換的坑:
注意:使用Integer的方法轉換出來的2進制字符串 最高位是沒有補零的 ,java的Integer類的toBinaryString()方法轉換出來的二進制字符串只會保留最高非零位以後的字符串,不滿int類型的32位,所以需要補零。
/**
* @Description: 將2進制補位32位
* @Param: [binary]
* @return: java.lang.String
* @Author: Liang Shan
* @Date: 2019/9/24 0024
*/
public static String binaryToBinary32(String binary) {
StringBuilder stringBuilder = new StringBuilder();
if (binary.length() < 32) {
for (int i = 0; i < 32 - binary.length();i++) {
stringBuilder.append("0");
}
}
stringBuilder.append(binary);
return stringBuilder.toString();
}
工具類:
package com.lw.czy.util;
/**
* @program: ysczy
* @description: 進制轉換
* @author: Liang Shan
* @create: 2019-09-19 17:01
**/
public class ParseUtil {
/**
* @Description: 16進制字符串轉10進制
* @Param: [hex]
* @return: java.lang.String
* @Author: Liang Shan
* @Date: 2019/9/24 0024
*/
public static Integer hexStringToDecimal(String hex) {
Integer result = Integer.valueOf(hex, 16);
return result;
}
/**
* @Description: 16進制字符串轉2進制字符串
* @Param: [hex]
* @return: java.lang.String
* @Author: Liang Shan
* @Date: 2019/9/24 0024
*/
public static String hexStringToBinaryString(String hex) {
Integer temp = Integer.valueOf(hex, 16);
String result = Integer.toBinaryString(temp);
return result;
}
/**
* @Description: 10進制轉16進制字符串
* @Param: []
* @return: java.lang.String
* @Author: Liang Shan
* @Date: 2019/9/24 0024
*/
public static String decimalToHexString(Integer decimal) {
String result = Integer.toHexString(decimal);
return result;
}
/**
* @Description: 10進制轉2進制字符串
* @Param: []
* @return: java.lang.String
* @Author: Liang Shan
* @Date: 2019/9/24 0024
*/
public static String decimalToBinaryString(Integer decimal) {
String result = Integer.toBinaryString(decimal);
return result;
}
/**
* @Description: 2進制字符串轉10進制
* @Param: [hex]
* @return: java.lang.String
* @Author: Liang Shan
* @Date: 2019/9/24 0024
*/
public static Integer binaryStringToDecimal(String binary) {
Integer result = Integer.valueOf(binary, 2);
return result;
}
/**
* @Description: 2進制字符串轉16進制字符串
* @Param: []
* @return: java.lang.String
* @Author: Liang Shan
* @Date: 2019/9/24 0024
*/
public static String binaryStringToHexString(String binary) {
Integer temp = Integer.valueOf(binary, 2);
String result = Integer.toHexString(temp);
return result;
}
/**
* @Description: byte[]轉字符串
* @Param: [bytes]
* @return: java.lang.String
* @Author: Liang Shan
* @Date: 2019/9/20 0020
*/
public static String byte2Hex(byte[] bytes) {
StringBuffer stringBuffer = new StringBuffer();
String temp = null;
for (int i = 0; i < bytes.length; i++) {
temp = Integer.toHexString(bytes[i] & 0xff);
if (temp.length() == 1) {
// 得到的一位的進行補0操作
stringBuffer.append("0");
}
stringBuffer.append(temp);
}
return stringBuffer.toString();
}
/**
* @Description: byte[]轉String[]
* @Param: [bytes]
* @return: java.lang.String[]
* @Author: Liang Shan
* @Date: 2019/9/20 0020
*/
public static String[] bytesToStrings(byte[] bytes) {
String[] strings = new String[bytes.length];
for (int i = 0; i < bytes.length; i++) {
String temp = Integer.toHexString(bytes[i] & 0xff);
if (temp.length() == 1) {
strings[i] = '0' + temp;
} else {
strings[i] = temp;
}
}
return strings;
}
}