Hi Vinnie,

On the API and spec, a few comments:

 - Expanding the printable string from ASCII to ISO-8859-1 would make it a bit more useful in more cases.    That might suggest using the Charset converter to do the work (less optimized but more functional).

- There is no API support for ByteBuffers, another common source of bytes, that would make a good addition    for completeness.  John Rose suggested a ByteSequence interface in the context of file processing but
   that hasn't settled down.

- The class name "Hex" might be a bit more evocative as HexDump or HexConverter.

- Method names;  the "Hex" in method names might be unnecessary/redundant since, as static methods,   they would frequently appear in code as "Hex.fromHexString" and a simple "Hex.fromString" would be fine.
  Ditto,  toHexString(bytes) -> toString(bytes)...

- There are not many forms that allow the formatter to be supplied, for example, dump(in, out) might be
  a case where a formatter would be desired.

- Hex.Formatter interface could have a default method that provides the default formatting or as
  a static method so it can be used with a method reference.

- On the example in the class javadoc, I would use the implementation of the default formatter with both hex and ascii
  to show how that works.

 - As Max observes, being able to supply the delimiters might be a good addition.  (I'm thinking IP addresses too).

It looks quite good and very useful.

Thanks, Roger

On 5/8/2018 10:34 PM, Weijun Wang wrote:
Nice tool.

However, I am not sure how toFormattedHexString() and toPrintableString() are 
useful, seems only for providing a customizable dump format which is, actually, 
not very customizable.

For me, toHexString and fromHexString are of course the most useful methods. As 
for dump, I can only think of

1. The existing sun.security.HexDumpEncoder format, when I want to dump a lot 
of bytes as a block
2. "00:11:22:33:AA:BB:CC" which fits in one line and also easy to read, when I 
want inline debugging output

If the customizable dump method is both powerful and simple enough to create 2) above, I'll be 
happy. Otherwise, I can live with toHexString().replaceAll("(..)(?=.)", "$1:").

Thanks
Max

On May 4, 2018, at 4:22 AM, Vincent Ryan <vincent.x.r...@oracle.com> wrote:

Hello,

Please review this proposal for a new API to conveniently generate and display 
binary data using hex string representation.
It supports both bulk and stream operations and it can also generate the 
well-known hexdump format [1].

Thanks


Bug: https://bugs.openjdk.java.net/browse/JDK-8170769
API: 
http://cr.openjdk.java.net/~vinnie/8170769/javadoc.05/api/java.base/java/util/Hex.html
Webrev: http://cr.openjdk.java.net/~vinnie/8170769/webrev.05/

____
[1] https://docs.oracle.com/cd/E86824_01/html/E54763/hexdump-1.html

Reply via email to