public static String bytesToString(List<?> bytesList) {
        byte[] bytes = bytesFromList(bytesList);
        return new String(bytes);
    }
@Test
    public void bytesFromList_SpecSymbol() {
        List<String> listHex = new ArrayList<>(Arrays.asList("1D", "0x1D", "1F", "0x1F", "0x20", "0x20"));
        byte[] expectedBytes = new byte[]{29, 29, 31, 31, 32, 32};
        String actualStr = TbUtils.bytesToString(listHex);
        byte[] actualBytes = actualStr.getBytes();
        Assertions.assertArrayEquals(expectedBytes, actualBytes);
        Assertions.assertTrue(actualStr.isBlank());
        listHex = new ArrayList<>(Arrays.asList("0x21", "0x21"));
        expectedBytes = new byte[]{33, 33};
        actualStr = TbUtils.bytesToString(listHex);
        actualBytes = actualStr.getBytes();
        Assertions.assertArrayEquals(expectedBytes, actualBytes);
        Assertions.assertFalse(actualStr.isBlank());
        Assertions.assertEquals("!!", actualStr);
        listHex = new ArrayList<>(Arrays.asList("21", "0x21"));
        expectedBytes = new byte[]{21, 33};
        actualStr = TbUtils.bytesToString(listHex);
        actualBytes = actualStr.getBytes();
        Assertions.assertArrayEquals(expectedBytes, actualBytes);
        Assertions.assertFalse(actualStr.isBlank());
        Assertions.assertEquals("!", actualStr.substring(1));
        Assertions.assertEquals('\u0015', actualStr.charAt(0));
        Assertions.assertEquals(21, actualStr.charAt(0));
    }