Skip to content

Commit c76b19f

Browse files
committed
Simplify hex methods
1 parent 4b5ea31 commit c76b19f

File tree

1 file changed

+9
-9
lines changed
  • src/main/java/org/apache/commons/codec/binary

1 file changed

+9
-9
lines changed

src/main/java/org/apache/commons/codec/binary/Hex.java

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -98,12 +98,10 @@ public static int decodeHex(final char[] data, final byte[] out, final int outOf
9898
throw new DecoderException("Output array is not large enough to accommodate decoded data.");
9999
}
100100
// two characters form the hex value.
101-
for (int i = outOffset, j = 0; j < len; i++) {
102-
int f = toDigit(data[j], j) << 4;
103-
j++;
104-
f |= toDigit(data[j], j);
105-
j++;
106-
out[i] = (byte) (f & 0xFF);
101+
for (int i = 0, j = outOffset; i < len; i += 2, j++) {
102+
final int high = toDigit(data[i], i) << 4;
103+
final int low = toDigit(data[i + 1], i + 1);
104+
out[j] = (byte) (high | low);
107105
}
108106
return outLen;
109107
}
@@ -207,9 +205,11 @@ public static void encodeHex(final byte[] data, final int dataOffset, final int
207205
*/
208206
private static char[] encodeHex(final byte[] data, final int dataOffset, final int dataLen, final char[] toDigits, final char[] out, final int outOffset) {
209207
// two characters form the hex value.
210-
for (int i = dataOffset, j = outOffset; i < dataOffset + dataLen; i++) {
211-
out[j++] = toDigits[(0xF0 & data[i]) >>> 4];
212-
out[j++] = toDigits[0x0F & data[i]];
208+
final int end = dataOffset + dataLen;
209+
for (int i = dataOffset, j = outOffset; i < end; i++) {
210+
final byte value = data[i];
211+
out[j++] = toDigits[value >> 4 & 0x0f];
212+
out[j++] = toDigits[value & 0x0f];
213213
}
214214
return out;
215215
}

0 commit comments

Comments
 (0)