[11] RFR: 8170769 Provide a simple hexdump facility for binary data
Roger Riggs
Roger.Riggs at Oracle.com
Wed May 9 15:20:26 UTC 2018
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.Ryan at 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
More information about the core-libs-dev
mailing list