EdidUtil { public static String toString(byte[] edid) { StringBuilder sb = new StringBuilder(); sb.append(" Manuf. ID=").append(EdidUtil.getManufacturerID(edid)); sb.append(", Product ID=").append(EdidUtil.getProductID(edid)); sb.append(", ").append(EdidUtil.isDigital(edid) ? "Digital" : "Analog"); sb.append(", Serial=").append(EdidUtil.getSerialNo(edid)); sb.append(", ManufDate=").append(EdidUtil.getWeek(edid) * 12 / 52 + 1).append('/') .append(EdidUtil.getYear(edid)); sb.append(", EDID v").append(EdidUtil.getVersion(edid)); int hSize = EdidUtil.getHcm(edid); int vSize = EdidUtil.getVcm(edid); sb.append(String.format("%n %d x %d cm (%.1f x %.1f in)", hSize, vSize, hSize / 2.54, vSize / 2.54)); byte[][] desc = EdidUtil.getDescriptors(edid); for (byte[] b : desc) { switch (EdidUtil.getDescriptorType(b)) { case 0xff: sb.append("\n Serial Number: ").append(EdidUtil.getDescriptorText(b)); break; case 0xfe: sb.append("\n Unspecified Text: ").append(EdidUtil.getDescriptorText(b)); break; case 0xfd: sb.append("\n Range Limits: ").append(EdidUtil.getDescriptorRangeLimits(b)); break; case 0xfc: sb.append("\n Monitor Name: ").append(EdidUtil.getDescriptorText(b)); break; case 0xfb: sb.append("\n White Point Data: ").append(ParseUtil.byteArrayToHexString(b)); break; case 0xfa: sb.append("\n Standard Timing ID: ").append(ParseUtil.byteArrayToHexString(b)); break; default: if (EdidUtil.getDescriptorType(b) <= 0x0f && EdidUtil.getDescriptorType(b) >= 0x00) { sb.append("\n Manufacturer Data: ").append(ParseUtil.byteArrayToHexString(b)); } else { sb.append("\n Preferred Timing: ").append(EdidUtil.getTimingDescriptor(b)); } break; } } return sb.toString(); } private  EdidUtil(); static String getManufacturerID(byte[] edid); static String getProductID(byte[] edid); static String getSerialNo(byte[] edid); static byte getWeek(byte[] edid); static int getYear(byte[] edid); static String getVersion(byte[] edid); static boolean isDigital(byte[] edid); static int getHcm(byte[] edid); static int getVcm(byte[] edid); static byte[][] getDescriptors(byte[] edid); static int getDescriptorType(byte[] desc); static String getTimingDescriptor(byte[] desc); static String getDescriptorRangeLimits(byte[] desc); static String getDescriptorText(byte[] desc); static String toString(byte[] edid);  }
@Test public void testToString() { String[] toString = EdidUtil.toString(EDID).split("\\n"); assertEquals(6, toString.length); toString = EdidUtil.toString(ParseUtil.hexStringToByteArray(EDID_STR2)).split("\\n"); assertEquals(6, toString.length); }