Class UnsignedBytes


  • @GwtIncompatible
    public final class UnsignedBytes
    extends java.lang.Object
    Static utility methods pertaining to byte primitives that interpret values as unsigned (that is, any negative value b is treated as the positive value 256 + b). The corresponding methods that treat the values as signed are found in SignedBytes, and the methods for which signedness is not an issue are in Bytes.

    See the Guava User Guide article on primitive utilities.

    Since:
    1.0
    Author:
    Kevin Bourrillion, Martin Buchholz, Hiroshi Yamauchi, Louis Wasserman
    • Field Summary

      Fields 
      Modifier and Type Field Description
      static byte MAX_POWER_OF_TWO
      The largest power of two that can be represented as an unsigned byte.
      static byte MAX_VALUE
      The largest value that fits into an unsigned byte.
    • Method Summary

      All Methods Static Methods Concrete Methods 
      Modifier and Type Method Description
      static byte checkedCast​(long value)
      Returns the byte value that, when treated as unsigned, is equal to value, if possible.
      static int compare​(byte a, byte b)
      Compares the two specified byte values, treating them as unsigned values between 0 and 255 inclusive.
      static java.lang.String join​(java.lang.String separator, byte... array)
      Returns a string containing the supplied byte values separated by separator.
      static java.util.Comparator<byte[]> lexicographicalComparator()
      Returns a comparator that compares two byte arrays lexicographically.
      static byte max​(byte... array)
      Returns the greatest value present in array, treating values as unsigned.
      static byte min​(byte... array)
      Returns the least value present in array, treating values as unsigned.
      static byte parseUnsignedByte​(java.lang.String string)
      Returns the unsigned byte value represented by the given decimal string.
      static byte parseUnsignedByte​(java.lang.String string, int radix)
      Returns the unsigned byte value represented by a string with the given radix.
      static byte saturatedCast​(long value)
      Returns the byte value that, when treated as unsigned, is nearest in value to value.
      static void sort​(byte[] array)
      Sorts the array, treating its elements as unsigned bytes.
      static void sort​(byte[] array, int fromIndex, int toIndex)
      Sorts the array between fromIndex inclusive and toIndex exclusive, treating its elements as unsigned bytes.
      static void sortDescending​(byte[] array)
      Sorts the elements of array in descending order, interpreting them as unsigned 8-bit integers.
      static void sortDescending​(byte[] array, int fromIndex, int toIndex)
      Sorts the elements of array between fromIndex inclusive and toIndex exclusive in descending order, interpreting them as unsigned 8-bit integers.
      static int toInt​(byte value)
      Returns the value of the given byte as an integer, when treated as unsigned.
      static java.lang.String toString​(byte x)
      Returns a string representation of x, where x is treated as unsigned.
      static java.lang.String toString​(byte x, int radix)
      Returns a string representation of x for the given radix, where x is treated as unsigned.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Method Detail

      • toInt

        public static int toInt​(byte value)
        Returns the value of the given byte as an integer, when treated as unsigned. That is, returns value + 256 if value is negative; value itself otherwise.

        Java 8+ users: use Byte.toUnsignedInt(byte) instead.

        Since:
        6.0
      • checkedCast

        @CanIgnoreReturnValue
        public static byte checkedCast​(long value)
        Returns the byte value that, when treated as unsigned, is equal to value, if possible.
        Parameters:
        value - a value between 0 and 255 inclusive
        Returns:
        the byte value that, when treated as unsigned, equals value
        Throws:
        java.lang.IllegalArgumentException - if value is negative or greater than 255
      • saturatedCast

        public static byte saturatedCast​(long value)
        Returns the byte value that, when treated as unsigned, is nearest in value to value.
        Parameters:
        value - any long value
        Returns:
        (byte) 255 if value >= 255, (byte) 0 if value <= 0, and value cast to byte otherwise
      • compare

        public static int compare​(byte a,
                                  byte b)
        Compares the two specified byte values, treating them as unsigned values between 0 and 255 inclusive. For example, (byte) -127 is considered greater than (byte) 127 because it is seen as having the value of positive 129.
        Parameters:
        a - the first byte to compare
        b - the second byte to compare
        Returns:
        a negative value if a is less than b; a positive value if a is greater than b; or zero if they are equal
      • min

        public static byte min​(byte... array)
        Returns the least value present in array, treating values as unsigned.
        Parameters:
        array - a nonempty array of byte values
        Returns:
        the value present in array that is less than or equal to every other value in the array according to compare(byte, byte)
        Throws:
        java.lang.IllegalArgumentException - if array is empty
      • max

        public static byte max​(byte... array)
        Returns the greatest value present in array, treating values as unsigned.
        Parameters:
        array - a nonempty array of byte values
        Returns:
        the value present in array that is greater than or equal to every other value in the array according to compare(byte, byte)
        Throws:
        java.lang.IllegalArgumentException - if array is empty
      • toString

        public static java.lang.String toString​(byte x)
        Returns a string representation of x, where x is treated as unsigned.
        Since:
        13.0
      • toString

        public static java.lang.String toString​(byte x,
                                                int radix)
        Returns a string representation of x for the given radix, where x is treated as unsigned.
        Parameters:
        x - the value to convert to a string.
        radix - the radix to use while working with x
        Throws:
        java.lang.IllegalArgumentException - if radix is not between Character.MIN_RADIX and Character.MAX_RADIX.
        Since:
        13.0
      • parseUnsignedByte

        @CanIgnoreReturnValue
        public static byte parseUnsignedByte​(java.lang.String string)
        Returns the unsigned byte value represented by the given decimal string.
        Throws:
        java.lang.NumberFormatException - if the string does not contain a valid unsigned byte value
        java.lang.NullPointerException - if string is null (in contrast to Byte.parseByte(String))
        Since:
        13.0
      • parseUnsignedByte

        @CanIgnoreReturnValue
        public static byte parseUnsignedByte​(java.lang.String string,
                                             int radix)
        Returns the unsigned byte value represented by a string with the given radix.
        Parameters:
        string - the string containing the unsigned byte representation to be parsed.
        radix - the radix to use while parsing string
        Throws:
        java.lang.NumberFormatException - if the string does not contain a valid unsigned byte with the given radix, or if radix is not between Character.MIN_RADIX and Character.MAX_RADIX.
        java.lang.NullPointerException - if string is null (in contrast to Byte.parseByte(String))
        Since:
        13.0
      • join

        public static java.lang.String join​(java.lang.String separator,
                                            byte... array)
        Returns a string containing the supplied byte values separated by separator. For example, join(":", (byte) 1, (byte) 2, (byte) 255) returns the string "1:2:255".
        Parameters:
        separator - the text that should appear between consecutive values in the resulting string (but not at the start or end)
        array - an array of byte values, possibly empty
      • lexicographicalComparator

        public static java.util.Comparator<byte[]> lexicographicalComparator()
        Returns a comparator that compares two byte arrays lexicographically. That is, it compares, using compare(byte, byte)), the first pair of values that follow any common prefix, or when one array is a prefix of the other, treats the shorter array as the lesser. For example, [] < [0x01] < [0x01, 0x7F] < [0x01, 0x80] < [0x02]. Values are treated as unsigned.

        The returned comparator is inconsistent with Object.equals(Object) (since arrays support only identity equality), but it is consistent with Arrays.equals(byte[], byte[]).

        Since:
        2.0
      • sort

        public static void sort​(byte[] array)
        Sorts the array, treating its elements as unsigned bytes.
        Since:
        23.1
      • sort

        public static void sort​(byte[] array,
                                int fromIndex,
                                int toIndex)
        Sorts the array between fromIndex inclusive and toIndex exclusive, treating its elements as unsigned bytes.
        Since:
        23.1
      • sortDescending

        public static void sortDescending​(byte[] array)
        Sorts the elements of array in descending order, interpreting them as unsigned 8-bit integers.
        Since:
        23.1
      • sortDescending

        public static void sortDescending​(byte[] array,
                                          int fromIndex,
                                          int toIndex)
        Sorts the elements of array between fromIndex inclusive and toIndex exclusive in descending order, interpreting them as unsigned 8-bit integers.
        Since:
        23.1