public class ReadTxt { //读取文件 public static void main(String[] args) { try { String str = ""; // 1.建立连接 FileInputStream fis = new FileInputStream("E:\protocol\01.txt"); // 2.设置保存数据的字节数组 byte[] dest = new byte[fis.available()]; // 3.循环读取 while (fis.read(dest) != -1) { // 将字节数组中的内容转换为String内容字符串输出 str = new String(dest, 0, dest.length); } System.out.println("str : "+str); byte[] res = hex2Bytes(str); //复制前三个字节到totalArr数组中 byte[] totalArr = new byte[3]; System.arraycopy(res, 0, totalArr, 0, 3); int totalLen = byteToInt2(totalArr); System.out.println("totalLen : "+totalLen); //4.关闭流 fis.close(); } catch (Exception e) { e.printStackTrace(); } } //两位16进制表示一个字节 public static byte[] hex2Bytes(String hexString) { if (hexString == null || hexString.equals("")) { return null; } int length = hexString.length() / 2; char[] hexChars = hexString.toCharArray(); byte[] bytes = new byte[length]; String hexDigits = "0123456789abcdef"; for (int i = 0; i < length; i++) { int pos = i * 2; // 两个字符对应一个byte int h = hexDigits.indexOf(hexChars[pos]) << 4; // 注1 int l = hexDigits.indexOf(hexChars[pos + 1]); // 注2 if (h == -1 || l == -1) { // 非16进制字符 return null; } bytes[i] = (byte) (h | l); } return bytes; } public static int byteToInt2(byte[] b) { int mask = 0xff; int temp = 0; int n = 0; for (int i = 0; i < b.length; i++) { n <<= 8; temp = b[i] & mask; n |= temp; } return n; } }