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}