RFR: 8251989: Hex formatting and parsing utility [v9]
Roger Riggs
rriggs at openjdk.java.net
Tue Oct 27 03:09:32 UTC 2020
> java.util.HexFormat utility:
>
> - Format and parse hexadecimal strings, with parameters for delimiter, prefix, suffix and upper/lowercase
> - Static factories and builder methods to create HexFormat copies with modified parameters.
> - Consistent naming of methods for conversion of byte arrays to formatted strings and back: formatHex and parseHex
> - Consistent naming of methods for conversion of primitive types: toHexDigits... and fromHexDigits...
> - Prefix and suffixes now apply to each formatted value, not the string as a whole
> - Using java.util.Appendable as a target for buffered conversions so output to Writers and PrintStreams
> like System.out are supported in addition to StringBuilder. (IOExceptions are converted to unchecked exceptions)
> - Immutable and thread safe, a "value-based" class
>
> See the [HexFormat javadoc](http://cr.openjdk.java.net/~rriggs/8251989-hex-formatter/java.base/java/util/HexFormat.html) for details.
>
> Review comments and suggestions welcome.
Roger Riggs has updated the pull request incrementally with two additional commits since the last revision:
- The HexFormat API indexing model for array and string ranges is changed
to describe the range using 'fromIndex (inclusive)' and 'toIndex (exclusive)'.
Initially, it was specified as 'index' and 'length'. However, both byte arrays
and strings used in the HexFormat API typically use fromIndex and toIndex
to describe ranges. Using the same indexing model can prevent mistakes.
The change affects the methods and corresponding tests:
formatHex(byte[] bytes, int fromIndex, int toIndex)
formatHex(A out, byte[] bytes, int fromIndex, int toIndex)
parseHex(char[] chars, int fromIndex, int toIndex)
parseHex(CharSequence string, int fromIndex, int toIndex)
fromHexDigits(CharSequence string, int fromIndex, int toIndex)
fromHexDigitsToLong(CharSequence string, int fromIndex, int toIndex)
- - Added @see and @link references to Integer.toHexString and Long.toHexString
- Clarified parsing is case insensistive in various parse and fromXXX methods
- Source level cleanup based on review comments
- Expanded some javadoc tag text to make it more descriptive
- Consistent use of 'hexadecimal' vs 'hex'
-------------
Changes:
- all: https://git.openjdk.java.net/jdk/pull/482/files
- new: https://git.openjdk.java.net/jdk/pull/482/files/2b493d37..2aeab7d7
Webrevs:
- full: https://webrevs.openjdk.java.net/?repo=jdk&pr=482&range=08
- incr: https://webrevs.openjdk.java.net/?repo=jdk&pr=482&range=07-08
Stats: 205 lines in 4 files changed: 25 ins; 8 del; 172 mod
Patch: https://git.openjdk.java.net/jdk/pull/482.diff
Fetch: git fetch https://git.openjdk.java.net/jdk pull/482/head:pull/482
PR: https://git.openjdk.java.net/jdk/pull/482
More information about the core-libs-dev
mailing list