All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.github.antelopeframework.remoting.server.HessianBase64 Maven / Gradle / Ivy

The newest version!
package com.github.antelopeframework.remoting.server;

public class HessianBase64 {

	/**
	 * Creates the Base64 value.
	 */
	public static String base64(String value) {
		StringBuffer cb = new StringBuffer();

		int i = 0;
		for (i = 0; i + 2 < value.length(); i += 3) {
			long chunk = (int) value.charAt(i);
			chunk = (chunk << 8) + (int) value.charAt(i + 1);
			chunk = (chunk << 8) + (int) value.charAt(i + 2);

			cb.append(encode(chunk >> 18));
			cb.append(encode(chunk >> 12));
			cb.append(encode(chunk >> 6));
			cb.append(encode(chunk));
		}

		if (i + 1 < value.length()) {
			long chunk = (int) value.charAt(i);
			chunk = (chunk << 8) + (int) value.charAt(i + 1);
			chunk <<= 8;

			cb.append(encode(chunk >> 18));
			cb.append(encode(chunk >> 12));
			cb.append(encode(chunk >> 6));
			cb.append('=');
		} else if (i < value.length()) {
			long chunk = (int) value.charAt(i);
			chunk <<= 16;

			cb.append(encode(chunk >> 18));
			cb.append(encode(chunk >> 12));
			cb.append('=');
			cb.append('=');
		}

		return cb.toString();
	}

	public static char encode(long d) {
		d &= 0x3f;
		
		if (d < 26) {
			return (char) (d + 'A');
		} else if (d < 52) {
			return (char) (d + 'a' - 26);
		} else if (d < 62) {
			return (char) (d + '0' - 52);
		} else if (d == 62) {
			return '+';
		} else {
			return '/';
		}
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy