Package okio

Class ByteString

  • All Implemented Interfaces:
    Serializable, Comparable<ByteString>

    public class ByteString
    extends Object
    implements Serializable, Comparable<ByteString>
    An immutable sequence of bytes.

    Byte strings compare lexicographically as a sequence of unsigned bytes. That is, the byte string ff sorts after 00. This is counter to the sort order of the corresponding bytes, where -1 sorts before 0.

    Full disclosure: this class provides untrusted input and output streams with raw access to the underlying byte array. A hostile stream implementation could keep a reference to the mutable byte string, violating the immutable guarantee of this class. For this reason a byte string's immutability guarantee cannot be relied upon for security in applets and other environments that run both trusted and untrusted code in the same process.

    See Also:
    Serialized Form
    • Field Detail

      • EMPTY

        public static final ByteString EMPTY
        A singleton empty ByteString.
    • Method Detail

      • of

        public static ByteString of​(byte... data)
        Returns a new byte string containing a clone of the bytes of data.
      • of

        public static ByteString of​(byte[] data,
                                    int offset,
                                    int byteCount)
        Returns a new byte string containing a copy of byteCount bytes of data starting at offset.
      • encodeUtf8

        public static ByteString encodeUtf8​(String s)
        Returns a new byte string containing the UTF-8 bytes of s.
      • encodeString

        public static ByteString encodeString​(String s,
                                              Charset charset)
        Returns a new byte string containing the charset-encoded bytes of s.
      • utf8

        public String utf8()
        Constructs a new String by decoding the bytes as UTF-8.
      • string

        public String string​(Charset charset)
        Constructs a new String by decoding the bytes using charset.
      • base64

        public String base64()
        Returns this byte string encoded as Base64. In violation of the RFC, the returned string does not wrap lines at 76 columns.
      • md5

        public ByteString md5()
        Returns the 128-bit MD5 hash of this byte string.
      • sha1

        public ByteString sha1()
        Returns the 160-bit SHA-1 hash of this byte string.
      • sha256

        public ByteString sha256()
        Returns the 256-bit SHA-256 hash of this byte string.
      • sha512

        public ByteString sha512()
        Returns the 512-bit SHA-512 hash of this byte string.
      • hmacSha1

        public ByteString hmacSha1​(ByteString key)
        Returns the 160-bit SHA-1 HMAC of this byte string.
      • hmacSha256

        public ByteString hmacSha256​(ByteString key)
        Returns the 256-bit SHA-256 HMAC of this byte string.
      • hmacSha512

        public ByteString hmacSha512​(ByteString key)
        Returns the 512-bit SHA-512 HMAC of this byte string.
      • decodeBase64

        @Nullable
        public static ByteString decodeBase64​(String base64)
        Decodes the Base64-encoded bytes and returns their value as a byte string. Returns null if base64 is not a Base64-encoded sequence of bytes.
      • hex

        public String hex()
        Returns this byte string encoded in hexadecimal.
      • decodeHex

        public static ByteString decodeHex​(String hex)
        Decodes the hex-encoded bytes and returns their value a byte string.
      • toAsciiLowercase

        public ByteString toAsciiLowercase()
        Returns a byte string equal to this byte string, but with the bytes 'A' through 'Z' replaced with the corresponding byte in 'a' through 'z'. Returns this byte string if it contains no bytes in 'A' through 'Z'.
      • toAsciiUppercase

        public ByteString toAsciiUppercase()
        Returns a byte string equal to this byte string, but with the bytes 'a' through 'z' replaced with the corresponding byte in 'A' through 'Z'. Returns this byte string if it contains no bytes in 'a' through 'z'.
      • substring

        public ByteString substring​(int beginIndex)
        Returns a byte string that is a substring of this byte string, beginning at the specified index until the end of this string. Returns this byte string if beginIndex is 0.
      • substring

        public ByteString substring​(int beginIndex,
                                    int endIndex)
        Returns a byte string that is a substring of this byte string, beginning at the specified beginIndex and ends at the specified endIndex. Returns this byte string if beginIndex is 0 and endIndex is the length of this byte string.
      • getByte

        public byte getByte​(int pos)
        Returns the byte at pos.
      • size

        public int size()
        Returns the number of bytes in this ByteString.
      • toByteArray

        public byte[] toByteArray()
        Returns a byte array containing a copy of the bytes in this ByteString.
      • asByteBuffer

        public ByteBuffer asByteBuffer()
        Returns a ByteBuffer view of the bytes in this ByteString.
      • rangeEquals

        public boolean rangeEquals​(int offset,
                                   ByteString other,
                                   int otherOffset,
                                   int byteCount)
        Returns true if the bytes of this in [offset..offset+byteCount) equal the bytes of other in [otherOffset..otherOffset+byteCount). Returns false if either range is out of bounds.
      • rangeEquals

        public boolean rangeEquals​(int offset,
                                   byte[] other,
                                   int otherOffset,
                                   int byteCount)
        Returns true if the bytes of this in [offset..offset+byteCount) equal the bytes of other in [otherOffset..otherOffset+byteCount). Returns false if either range is out of bounds.
      • startsWith

        public final boolean startsWith​(ByteString prefix)
      • startsWith

        public final boolean startsWith​(byte[] prefix)
      • endsWith

        public final boolean endsWith​(ByteString suffix)
      • endsWith

        public final boolean endsWith​(byte[] suffix)
      • indexOf

        public final int indexOf​(ByteString other)
      • indexOf

        public final int indexOf​(ByteString other,
                                 int fromIndex)
      • indexOf

        public final int indexOf​(byte[] other)
      • indexOf

        public int indexOf​(byte[] other,
                           int fromIndex)
      • lastIndexOf

        public final int lastIndexOf​(ByteString other)
      • lastIndexOf

        public final int lastIndexOf​(ByteString other,
                                     int fromIndex)
      • lastIndexOf

        public final int lastIndexOf​(byte[] other)
      • lastIndexOf

        public int lastIndexOf​(byte[] other,
                               int fromIndex)
      • hashCode

        public int hashCode()
        Overrides:
        hashCode in class Object
      • toString

        public String toString()
        Returns a human-readable string that describes the contents of this byte string. Typically this is a string like [text=Hello] or [hex=0000ffff].
        Overrides:
        toString in class Object