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

scouter.util.Hexa32 Maven / Gradle / Ivy

/*
 *  Copyright 2015 the original author or authors.
 *  @https://github.com/scouter-project/scouter
 *
 *  Licensed under the Apache License, Version 2.0 (the "License");
 *  you may not use this file except in compliance with the License.
 *  You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 *  Unless required by applicable law or agreed to in writing, software
 *  distributed under the License is distributed on an "AS IS" BASIS,
 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *  See the License for the specific language governing permissions and
 *  limitations under the License.
 */

package scouter.util;

import scouter.extlib.scouter.com.google.common.primitives.UnsignedLongs;
import scouter.util.zipkin.HexCodec;

public class Hexa32 {

	private static final char PLUS = 'x';
	private static final char MINUS = 'z';

	public static String toUnsignedLongHex(long num) {
		return UnsignedLongs.toString(num, 16);
	}

	public static long fromUnsignedLongHex(String str) {
		return UnsignedLongs.parseUnsignedLong(str, 16);
	}

	public static String toString32(long num) {
		boolean minus = num < 0;
		if (minus) {
			if (num == Long.MIN_VALUE)
				return min;
			return MINUS + Long.toString(-num, 32);
		} else {
			if (num < 10)
				return Long.toString(num);
			else
				return PLUS + Long.toString(num, 32);
		}
	}

	private final static String min = "z8000000000000";

	public static long toLong32(String str) {
		if (str == null || str.length() == 0)
			return 0;

		switch (str.charAt(0)) {
		case MINUS:
			if (min.equals(str))
				return Long.MIN_VALUE;
			else
				return -1 * Long.parseLong(str.substring(1), 32);
		case PLUS:
			return Long.parseLong(str.substring(1), 32);
		default:
			return Long.parseLong(str);
		}
	}

	public static void main(String[] args) {
		System.out.println(Hexa32.toLong32("z6eq8mqkdkpt7c"));
		System.out.println(Hexa32.toString32(100000001L));

		System.out.println(Long.toHexString(792539709424970410L));

		System.out.println("=================================================");
		System.out.println(Long.toHexString(-342343233040343034L));
		System.out.println(UnsignedLongs.toString(-342343233040343034L, 16));
		System.out.println(UnsignedLongs.parseUnsignedLong("fb3fc0a4b35f2006", 16));

		System.out.println("=================================================");
		System.out.println(HexCodec.lowerHexToUnsignedLong("fb3fc0a4b35f2006"));
	}
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy