package com.cbsd.client.parse; import com.cbsd.client.parse.IParseDataInterface; public class DigitalParser implements IParseDataInterface { @Override public String parsePhysicalFromData(int sn, byte[] sourceData, byte[] fieldData, String endian, String binStr) { StringBuilder result = new StringBuilder(); if (fieldData.length == 1) { byte b = fieldData[0]; String binary = byteToBinary(b); for (int i = 0; i < binary.length(); i++) { result.append("通道-"); result.append(i); if (binary.charAt(i) == '1') { result.append(" 高电平"); } else { result.append(" 低电平"); } result.append(","); } result.deleteCharAt(result.lastIndexOf(",")); } return result.toString(); } @Override public String comment() { return "数字信号解析"; } /** * 将byte转换为8位二进制字符串 * * @param b 要转换的byte值 * @return 8位二进制字符串 */ public static String byteToBinary(byte b) { // 将byte转换为无符号整数,避免符号位扩展 int unsignedByte = b & 0xFF; // 转换为二进制字符串 String binary = Integer.toBinaryString(unsignedByte); // 确保结果是8位,不足的在前面补0 while (binary.length() < 8) { binary = "0" + binary; } return binary; } }