/* * Copyright 2015-2025 the original author or authors. * * 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 sockslib.utils; /** * The class <code>UnsignedByte</code> is a tool to convert signed byte to unsigned byte.<br> * * @author Youchao Feng * @version 1.0 * @date Mar 20, 2015 9:24:58 AM */ public final class UnsignedByte { /** * the byte in signed value. */ private byte num; /** * Constructs a UnsignedByte instance by an integer. * * @param num an integer. */ public UnsignedByte(int num) { this.num = (byte) num; } /** * Constructs a UsingedByte instance by a byte. * * @param b A byte. */ public UnsignedByte(byte b) { num = b; } /** * Gets unsigned byte from a signed byte. * * @param b signed byte. * @return unsigned byte as Integer.(0 ~ 255) */ public static int toInt(byte b) { return b & 0xFF; } /** * Gets hex string of a byte. * * @param b byte * @return Byte as Hex string. */ public static String toHexString(byte b) { return Integer.toHexString(toInt(b)); } /** * Gets unsigned value as an integer. * * @return Unsigned value as an integer. */ public int getUnsignedValue() { return num & 0xFF; } /** * Gets unsigned value as an integer. * * @return value as a normal Java byte. */ public byte getSignedValue() { return num; } @Override public boolean equals(Object obj) { if (obj instanceof UnsignedByte) { return num == ((UnsignedByte) obj).getSignedValue(); } return false; } @Override public int hashCode() { return new Integer(num).hashCode(); } }