对比新文件 |
| | |
| | | package com.gk.firework.Domain.Utils; |
| | | |
| | | import org.apache.commons.lang3.StringUtils; |
| | | |
| | | public class HexUtil { |
| | | /** |
| | | * 将十六进制的字符串转换成字节数组 |
| | | * |
| | | * @param hexString |
| | | * @return |
| | | */ |
| | | public static byte[] hexStrToByteArrs(String hexString) { |
| | | if (StringUtils.isEmpty(hexString)) { |
| | | return null; |
| | | } |
| | | |
| | | hexString = hexString.replaceAll(" ", ""); |
| | | int len = hexString.length(); |
| | | int index = 0; |
| | | |
| | | byte[] bytes = new byte[len / 2]; |
| | | |
| | | while (index < len) { |
| | | String sub = hexString.substring(index, index + 2); |
| | | bytes[index / 2] = (byte) Integer.parseInt(sub, 16); |
| | | index += 2; |
| | | } |
| | | |
| | | return bytes; |
| | | } |
| | | |
| | | /** |
| | | * 数组转换成十六进制字符串 |
| | | * @return HexString |
| | | */ |
| | | public static final String bytesToHexString(byte[] bArray) { |
| | | StringBuffer sb = new StringBuffer(bArray.length); |
| | | String sTemp; |
| | | for (int i = 0; i < bArray.length; i++) { |
| | | sTemp = Integer.toHexString(0xFF & bArray[i]); |
| | | if (sTemp.length() < 2) |
| | | sb.append(0); |
| | | sb.append(sTemp.toUpperCase()); |
| | | // 在这里故意追加一个逗号便于最后的区分 |
| | | sb.append(" "); |
| | | } |
| | | return sb.toString(); |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 字节转换为浮点 |
| | | * |
| | | * @param b 字节(至少4个字节) |
| | | * @param index 开始位置 |
| | | * @return |
| | | */ |
| | | public static float byte2float(byte[] b, int index) { |
| | | int l; |
| | | l = b[index + 0]; |
| | | l &= 0xff; |
| | | l |= ((long) b[index + 1] << 8); |
| | | l &= 0xffff; |
| | | l |= ((long) b[index + 2] << 16); |
| | | l &= 0xffffff; |
| | | l |= ((long) b[index + 3] << 24); |
| | | return Float.intBitsToFloat(l); |
| | | } |
| | | |
| | | |
| | | /**四个字节的寄存器(十六进制),两两转成十进制,传过来之后返回浮点数**/ |
| | | public static float GetFloat(int P1, int P2) |
| | | { |
| | | int intSign, intSignRest, intExponent, intExponentRest; |
| | | float faResult, faDigit; |
| | | intSign = P1 / 32768; |
| | | intSignRest = P1 % 32768; |
| | | intExponent = intSignRest / 128; |
| | | intExponentRest = intSignRest % 128; |
| | | faDigit = (float)(intExponentRest * 65536 + P2) / 8388608; |
| | | faResult = (float)Math.pow(-1, intSign) * (float)Math.pow(2, intExponent - 127) * (faDigit + 1); |
| | | return faResult; |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | } |