1993ef2674bf860a84c5c17e51a7a9e13e5d56504Mindy Pereira/**
2993ef2674bf860a84c5c17e51a7a9e13e5d56504Mindy Pereira * Copyright (c) 2008, Google Inc.
3993ef2674bf860a84c5c17e51a7a9e13e5d56504Mindy Pereira *
4993ef2674bf860a84c5c17e51a7a9e13e5d56504Mindy Pereira * Licensed under the Apache License, Version 2.0 (the "License");
5993ef2674bf860a84c5c17e51a7a9e13e5d56504Mindy Pereira * you may not use this file except in compliance with the License.
6993ef2674bf860a84c5c17e51a7a9e13e5d56504Mindy Pereira * You may obtain a copy of the License at
7993ef2674bf860a84c5c17e51a7a9e13e5d56504Mindy Pereira *
8993ef2674bf860a84c5c17e51a7a9e13e5d56504Mindy Pereira *     http://www.apache.org/licenses/LICENSE-2.0
9993ef2674bf860a84c5c17e51a7a9e13e5d56504Mindy Pereira *
10993ef2674bf860a84c5c17e51a7a9e13e5d56504Mindy Pereira * Unless required by applicable law or agreed to in writing, software
11993ef2674bf860a84c5c17e51a7a9e13e5d56504Mindy Pereira * distributed under the License is distributed on an "AS IS" BASIS,
12993ef2674bf860a84c5c17e51a7a9e13e5d56504Mindy Pereira * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13993ef2674bf860a84c5c17e51a7a9e13e5d56504Mindy Pereira * See the License for the specific language governing permissions and
14993ef2674bf860a84c5c17e51a7a9e13e5d56504Mindy Pereira * limitations under the License.
15993ef2674bf860a84c5c17e51a7a9e13e5d56504Mindy Pereira */
16993ef2674bf860a84c5c17e51a7a9e13e5d56504Mindy Pereira
171bdbfefe4b144c7b031a1d9242a0fa061a0ae6b5Scott Kennedypackage com.google.android.mail.common.base;
18993ef2674bf860a84c5c17e51a7a9e13e5d56504Mindy Pereira
19993ef2674bf860a84c5c17e51a7a9e13e5d56504Mindy Pereira/**
20993ef2674bf860a84c5c17e51a7a9e13e5d56504Mindy Pereira * Static utility methods pertaining especially to byte arrays. Note that I/O-related functionality
21993ef2674bf860a84c5c17e51a7a9e13e5d56504Mindy Pereira * belongs in the {@code com.google.common.io} package.
22993ef2674bf860a84c5c17e51a7a9e13e5d56504Mindy Pereira *
23993ef2674bf860a84c5c17e51a7a9e13e5d56504Mindy Pereira * @author Chris Nokleberg
24993ef2674bf860a84c5c17e51a7a9e13e5d56504Mindy Pereira * @author Hiroshi Yamauchi
25993ef2674bf860a84c5c17e51a7a9e13e5d56504Mindy Pereira */
26993ef2674bf860a84c5c17e51a7a9e13e5d56504Mindy Pereirapublic final class ByteArrays {
27993ef2674bf860a84c5c17e51a7a9e13e5d56504Mindy Pereira  private ByteArrays() {}
28993ef2674bf860a84c5c17e51a7a9e13e5d56504Mindy Pereira
29993ef2674bf860a84c5c17e51a7a9e13e5d56504Mindy Pereira  private static final char[] HEX_DIGITS = "0123456789abcdef".toCharArray();
30993ef2674bf860a84c5c17e51a7a9e13e5d56504Mindy Pereira
31993ef2674bf860a84c5c17e51a7a9e13e5d56504Mindy Pereira  /**
32993ef2674bf860a84c5c17e51a7a9e13e5d56504Mindy Pereira   * Returns the byte array formatted as a lowercase hexadecimal string. The string will be
33993ef2674bf860a84c5c17e51a7a9e13e5d56504Mindy Pereira   * {@code 2 * bytes.length} characters long.
34993ef2674bf860a84c5c17e51a7a9e13e5d56504Mindy Pereira   */
35993ef2674bf860a84c5c17e51a7a9e13e5d56504Mindy Pereira  public static String toHexString(byte[] bytes) {
36993ef2674bf860a84c5c17e51a7a9e13e5d56504Mindy Pereira    StringBuilder sb = new StringBuilder(2 * bytes.length);
37993ef2674bf860a84c5c17e51a7a9e13e5d56504Mindy Pereira    for (byte b : bytes) {
38993ef2674bf860a84c5c17e51a7a9e13e5d56504Mindy Pereira      sb.append(HEX_DIGITS[(b >> 4) & 0xf]).append(HEX_DIGITS[b & 0xf]);
39993ef2674bf860a84c5c17e51a7a9e13e5d56504Mindy Pereira    }
40993ef2674bf860a84c5c17e51a7a9e13e5d56504Mindy Pereira    return sb.toString();
41993ef2674bf860a84c5c17e51a7a9e13e5d56504Mindy Pereira  }
42993ef2674bf860a84c5c17e51a7a9e13e5d56504Mindy Pereira}