
org.subethamail.smtp.internal.util.HexUtils Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of subethasmtp Show documentation
Show all versions of subethasmtp Show documentation
A fork of a fork (!) of SubEtha, an easy-to-use server-side SMTP library for Java.
The newest version!
package org.subethamail.smtp.internal.util;
/**
* Hex string manipulation utils.
*
* @author Diego Salvi
*/
public final class HexUtils {
private static final char[] LOOKUP_TABLE =
("000102030405060708090A0B0C0D0E0F"
+ "101112131415161718191A1B1C1D1E1F"
+ "202122232425262728292A2B2C2D2E2F"
+ "303132333435363738393A3B3C3D3E3F"
+ "404142434445464748494A4B4C4D4E4F"
+ "505152535455565758595A5B5C5D5E5F"
+ "606162636465666768696A6B6C6D6E6F"
+ "707172737475767778797A7B7C7D7E7F"
+ "808182838485868788898A8B8C8D8E8F"
+ "909192939495969798999A9B9C9D9E9F"
+ "A0A1A2A3A4A5A6A7A8A9AAABACADAEAF"
+ "B0B1B2B3B4B5B6B7B8B9BABBBCBDBEBF"
+ "C0C1C2C3C4C5C6C7C8C9CACBCCCDCECF"
+ "D0D1D2D3D4D5D6D7D8D9DADBDCDDDEDF"
+ "E0E1E2E3E4E5E6E7E8E9EAEBECEDEEEF"
+ "F0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF").toCharArray();
private HexUtils() {
// prevent instantiation
}
/**
* Convert a byte array into his hex representation.
*
* @param data byte array
* @return hexadecimal string
*/
public static String toHex(byte[] data) {
return toHex(data, 0, data.length, null);
}
/**
* Convert a byte array into his hex representation.
*
* @param data byte array
* @param sep byte separator
* @return hexadecimal string
*/
public static String toHex(byte[] data, char sep) {
return toHex(data, 0, data.length, sep);
}
/**
* Convert a byte array into his hex representation.
*
* @param data byte array
* @param off starting offset
* @param len bytes to convert
* @return hexadecimal string
*/
public static String toHex(byte[] data, int off, int len) {
return toHex(data, off, len, null);
}
/**
* Convert a byte array into his hex representation.
*
* @param data byte array
* @param off starting offset
* @param len bytes to convert
* @param sep (optional) byte separator
* @return hexadecimal string
*/
public static String toHex(byte[] data, int off, int len, Character sep) {
if (len < 0) {
throw new IllegalArgumentException("Invalid negative len " + len);
}
if (data.length < off) {
throw new IllegalArgumentException(
"Invalid offset outside array: offset " + off + " array length " + data.length);
}
final int end = off + len;
if (data.length < end) {
throw new IllegalArgumentException(
"Invalid length outside array: offset " + off + " length " + len + " array length " + data.length);
}
if (len == 0) {
return "";
}
final char[] result = sep == null ? new char[len << 1] : new char[(len << 1) + len - 1];
int lookup;
int i = 0;
while (off < end) {
lookup = (data[off++] & 0xFF) << 1;
result[i++] = LOOKUP_TABLE[lookup];
result[i++] = LOOKUP_TABLE[lookup + 1];
if (sep != null && off < end) {
result[i++] = sep;
}
}
return new String(result);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy