/*******************************************************************************
 * Copyright (c) 2002, 2006 IBM Corporation and others.
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 *
 * Contributors:
 *     IBM - Initial API and implementation
 *******************************************************************************/
package org.eclipse.core.tools;

/**
 * A set of utility methods for dealing with byte arrays.
 */
public class ByteUtil {

	/**
	 * Helper method that creates a string representation for a byte array.
	 *
	 * @param byteArray a byte array to be represented as string
	 * @param max a maximum number of bytes to be considered - if zero, there is
	 * no maximum.
	 * @return a byte array string representation
	 */
	public static String byteArrayToString(byte[] byteArray, int max) {
		StringBuffer result = new StringBuffer(byteArray.length * 2 + 2);
		int bytesToBeShown = (max > 0) ? (Math.min(max, byteArray.length)) : byteArray.length;
		result.append('[');
		for (int i = 0; i < bytesToBeShown; i++) {
			result.append(byteArray[i]);
			result.append(',');
		}
		// adds an ellipsis if there is too much bytes to show
		if (max > 0 && max < byteArray.length)
			result.append("..."); //$NON-NLS-1$
		// or remove the trailing comma
		else
			result.deleteCharAt(result.length() - 1);
		result.append(']');
		return result.toString();
	}
}
