public static byte[] fromHexString(final String values) {
        return fromHexString(values, ":");
    }
@Test
    public void testFromHexString() {
        String dpidStr = "3e:1f:01:fc:72:8c:63:31";
        String dpidStrNoSep = "3e1f01fc728c6331";
        long valid = 0x3e1f01fc728c6331L;
        byte[] validBytes = ByteBuffer.allocate(Long.BYTES).putLong(valid).array();
        byte[] testBytes = HexString.fromHexString(dpidStr);
        byte[] testBytesNoSep = HexString.fromHexString(dpidStrNoSep, null);
        byte[] testBytesUCase = HexString.fromHexString(dpidStr.toUpperCase());
        byte[] testBytesUCaseNoSep = HexString.fromHexString(dpidStrNoSep.toUpperCase(), null);
        assertArrayEquals(validBytes, testBytes);
        assertArrayEquals(validBytes, testBytesNoSep);
        assertArrayEquals(validBytes, testBytesUCase);
        assertArrayEquals(validBytes, testBytesUCaseNoSep);
    }