| | |
| | | |
| | | /** |
| | | * 截取指定长度的字符串,不足以0填充前面 |
| | | * @param hex 字符串 |
| | | * |
| | | * @param hex 字符串 |
| | | * @param totalBit 截取长度 |
| | | * @return 截取后的字符串 |
| | | */ |
| | |
| | | return hex; |
| | | } |
| | | |
| | | /** |
| | | * 十进制转16进制,补位0 |
| | | * |
| | | * @param index 字符串 |
| | | * @param totalBit 截取长度 |
| | | * @return 截取后的字符串 |
| | | */ |
| | | public static String suppleZero(Integer index, Integer totalBit) { |
| | | String format = String.format("%02X", index); |
| | | |
| | | totalBit = totalBit - format.length(); |
| | | |
| | | StringBuilder hexBuilder = new StringBuilder(format); |
| | | for (int i = 0; i < totalBit; i++) { |
| | | hexBuilder.insert(0, "0"); |
| | | } |
| | | format = hexBuilder.toString(); |
| | | return format; |
| | | } |
| | | |
| | | /** |
| | | * 十六进制转换成字节数组 |
| | | */ |
| | | public static byte[] hexStringToBytes(String hexString) { |
| | | if (hexString == null || hexString.equals("")) { |
| | | return null; |
| | | } |
| | | hexString = hexString.toUpperCase(); // 十六进制转大写字母 |
| | | int length = hexString.length() / 2; // 获取十六进制的长度,2个字符为一个十六进制 |
| | | char[] hexChars = hexString.toCharArray(); |
| | | byte[] d = new byte[length]; |
| | | for (int i = 0; i < length; i++) { |
| | | int pos = i * 2; |
| | | d[i] = (byte) (charToByte(hexChars[pos]) << 4 | charToByte(hexChars[pos + 1])); |
| | | } |
| | | return d; |
| | | } |
| | | |
| | | /** |
| | | * char转byte |
| | | */ |
| | | private static byte charToByte(char c) { |
| | | return (byte) "0123456789ABCDEF".indexOf(c); |
| | | } |
| | | |
| | | |
| | | public static boolean isHex(String str) { |
| | | boolean isHexFlg = true; |
| | | int i = 0; |
| | | char c; |
| | | for (i = 0; i < str.length(); i++) { |
| | | c = str.charAt(i); |
| | | if (!(((c >= '0') && (c <= '9')) || ((c >= 'A') && (c <= 'F')) || ((c >= 'a') && (c <= 'f')) || (c == ' '))) { |
| | | isHexFlg = false; |
| | | break; |
| | | } |
| | | } |
| | | return isHexFlg; |
| | | } |
| | | |
| | | } |