diff options
| author | Neil Fuller <nfuller@google.com> | 2019-04-05 18:07:07 +0100 |
|---|---|---|
| committer | Neil Fuller <nfuller@google.com> | 2019-04-05 18:07:07 +0100 |
| commit | cdc3a10d790f9446513868dccd8ac805d6ef384b (patch) | |
| tree | 9c9f7f0dc0d430105197e43153f18863a9574ed3 /core/java/android/util/ByteStringUtils.java | |
| parent | 5b3a0d18ae31413e61a0647860f093ab6fffaff6 (diff) | |
Switch ByteStringUtils over to HexEncoding impl
libcore/ already contains the necessary logic and it has
tests.
This should be a functional no op and is a precursor to removing
ByteStringUtils. HexEncoding may be hoisted up to android.util
eventually as there are no users in libcore outside of tests.
Bug: 124232146
Test: build only
Change-Id: I13bcb03aac0b3f19c6e4b9ac97f3c13e5012dc9c
Diffstat (limited to 'core/java/android/util/ByteStringUtils.java')
| -rw-r--r-- | core/java/android/util/ByteStringUtils.java | 35 |
1 files changed, 4 insertions, 31 deletions
diff --git a/core/java/android/util/ByteStringUtils.java b/core/java/android/util/ByteStringUtils.java index f6460ad90f6b..e4798f09517d 100644 --- a/core/java/android/util/ByteStringUtils.java +++ b/core/java/android/util/ByteStringUtils.java @@ -16,14 +16,14 @@ package android.util; +import libcore.util.HexEncoding; + /** * A utility class for common byte array to hex string operations and vise versa. * * @hide */ public final class ByteStringUtils { - private static final char[] HEX_LOWERCASE_ARRAY = "0123456789abcdef".toCharArray(); - private static final char[] HEX_UPPERCASE_ARRAY = "0123456789ABCDEF".toCharArray(); private ByteStringUtils() { /* hide constructor */ @@ -39,16 +39,7 @@ public final class ByteStringUtils { return null; } - final int byteLength = bytes.length; - final int charCount = 2 * byteLength; - final char[] chars = new char[charCount]; - - for (int i = 0; i < byteLength; i++) { - final int byteHex = bytes[i] & 0xFF; - chars[i * 2] = HEX_UPPERCASE_ARRAY[byteHex >>> 4]; - chars[i * 2 + 1] = HEX_UPPERCASE_ARRAY[byteHex & 0x0F]; - } - return new String(chars); + return HexEncoding.encodeToString(bytes, true /* upperCase */); } /** @@ -61,24 +52,6 @@ public final class ByteStringUtils { return null; } - final char[] chars = str.toCharArray(); - final int charLength = chars.length; - final byte[] bytes = new byte[charLength / 2]; - - for (int i = 0; i < bytes.length; i++) { - bytes[i] = - (byte) (((getIndex(chars[i * 2]) << 4) & 0xF0) - | (getIndex(chars[i * 2 + 1]) & 0x0F)); - } - return bytes; - } - - private static int getIndex(char c) { - for (int i = 0; i < HEX_UPPERCASE_ARRAY.length; i++) { - if (HEX_UPPERCASE_ARRAY[i] == c || HEX_LOWERCASE_ARRAY[i] == c) { - return i; - } - } - return -1; + return HexEncoding.decode(str, false /* allowSingleChar */); } } |
