# Class Base64

java.lang.Object
com.codename1.util.Base64

public abstract class Base64 extends java.lang.Object
This class implements Base64 encoding/decoding functionality as specified in RFC 2045 (http://www.ietf.org/rfc/rfc2045.txt).

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `Base64()`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `static byte[]`
  `decode(byte[] in)`
  `static int`
  `decode(byte[] in, byte[] out)`
  `static byte[]`
  `decode(byte[] in, int len)`
  Decodes an array of bytes containing a Base64 ascii string into binary data
  `static int`
  `decode(byte[] in, int len, byte[] out)`
  Decodes Base64 input into a caller-provided output buffer.
  `static int`
  `decodeNoWhitespaceSimd(byte[] in, int len, byte[] out)`
  Convenience overload for `decodeNoWhitespaceSimd(byte[], int, int, byte[], int)` using zero input offset.
  `static int`
  `decodeNoWhitespaceSimd(byte[] in, int len, byte[] out, int[] scratch)`
  Convenience overload for `decodeNoWhitespaceSimd(byte[], int, int, byte[], int)` that preserves the legacy scratch-bearing signature.
  `static int`
  `decodeNoWhitespaceSimd(byte[] in, int inOffset, int inLength, byte[] out, int outOffset)`
  SIMD-optimized Base64 decoding for no-whitespace input.
  `static int`
  `decodeNoWhitespaceSimd(byte[] in, int inOffset, int inLength, byte[] out, int outOffset, int[] scratch)`
  Compatibility overload that ignores the legacy scratch parameter.
  `static byte[]`
  `decodeUrlSafe(String s)`
  Decodes a URL-safe Base64 string (RFC 4648 sec5).
  `static String`
  `encode(byte[] in)`
  Encodes the given array as a base64 string
  `static String`
  `encodeNoNewline(byte[] in)`
  Encodes the given array as a base64 string without breaking lines
  `static int`
  `encodeNoNewline(byte[] in, byte[] out)`
  Encodes input into a caller-provided output buffer without line breaks.
  `static int`
  `encodeNoNewlineSimd(byte[] in, byte[] out)`
  Convenience overload for `encodeNoNewlineSimd(byte[], int, int, byte[], int)` using zero offsets.
  `static int`
  `encodeNoNewlineSimd(byte[] in, byte[] out, int[] scratch)`
  Convenience overload for `encodeNoNewlineSimd(byte[], int, int, byte[], int)` that preserves the legacy scratch-bearing signature.
  `static int`
  `encodeNoNewlineSimd(byte[] in, int inOffset, int inLength, byte[] out, int outOffset)`
  SIMD-optimized Base64 encoding with explicit offsets.
  `static int`
  `encodeNoNewlineSimd(byte[] in, int inOffset, int inLength, byte[] out, int outOffset, int[] scratch)`
  Compatibility overload that ignores the legacy scratch parameter.
  `static String`
  `encodeUrlSafe(byte[] in)`
  URL-safe Base64 encoding per RFC 4648 sec5: `+` becomes `-`, `/` becomes `_`, and the trailing `=` padding is dropped.

  ### Methods inherited from class java.lang.Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- ## Constructor Details

  - ### Base64

    public Base64()

- ## Method Details

  - ### decode

    public static byte[] decode(byte[] in)

  - ### decode

    public static byte[] decode(byte[] in, int len)

    Decodes an array of bytes containing a Base64 ascii string into binary data

    ###### Parameters

    - `in`: the array

    - `len`: the length of the array

    ###### Returns

    the decoded array

  - ### decode

    public static int decode(byte[] in, int len, byte[] out)

    Decodes Base64 input into a caller-provided output buffer.

    ###### Parameters

    - `in`: Base64 bytes

    - `len`: bytes from `in` to decode

    - `out`: destination buffer

    ###### Returns

    decoded length, or `-1` for invalid Base64

  - ### decode

    public static int decode(byte[] in, byte[] out)

  - ### encode

    public static String encode(byte[] in)

    Encodes the given array as a base64 string

    ###### Parameters

    - `in`: the array to encode

    ###### Returns

    the String containing the array

  - ### encodeNoNewline

    public static String encodeNoNewline(byte[] in)

    Encodes the given array as a base64 string without breaking lines

    ###### Parameters

    - `in`: the array to encode

    ###### Returns

    the String containing the array

  - ### encodeUrlSafe

    public static String encodeUrlSafe(byte[] in)

    URL-safe Base64 encoding per RFC 4648 sec5: `+` becomes `-`, `/` becomes `_`, and the trailing `=` padding is dropped. This is the encoding used by JWTs and most modern web token formats. Reuses the same SIMD-optimized encode path as [#encodeNoNewline(byte[])] under the hood, so it is just as fast.

    ###### Parameters

    - `in`: the array to encode

    ###### Returns

    the URL-safe Base64 string with no padding

  - ### decodeUrlSafe

    public static byte[] decodeUrlSafe(String s)

    Decodes a URL-safe Base64 string (RFC 4648 sec5). Padding is optional -- the canonical URL-safe form drops it, but this method also accepts strings that still carry trailing `=`.

    ###### Parameters

    - `s`: URL-safe Base64 string

    ###### Returns

    the decoded bytes

  - ### encodeNoNewline

    public static int encodeNoNewline(byte[] in, byte[] out)

    Encodes input into a caller-provided output buffer without line breaks.

    ###### Parameters

    - `in`: input bytes

    - `out`: destination buffer

    ###### Returns

    number of bytes written to `out`

  - ### encodeNoNewlineSimd

    public static int encodeNoNewlineSimd(byte[] in, int inOffset, int inLength, byte[] out, int outOffset)
    SIMD-optimized Base64 encoding with explicit offsets. Uses generic SIMD byte primitives over a single caller-invisible scratch slab.

  - ### encodeNoNewlineSimd

    public static int encodeNoNewlineSimd(byte[] in, int inOffset, int inLength, byte[] out, int outOffset, int[] scratch)
    Compatibility overload that ignores the legacy scratch parameter.

  - ### decodeNoWhitespaceSimd

    public static int decodeNoWhitespaceSimd(byte[] in, int inOffset, int inLength, byte[] out, int outOffset)
    SIMD-optimized Base64 decoding for no-whitespace input. Uses generic SIMD byte primitives over a single caller-invisible scratch slab.

  - ### decodeNoWhitespaceSimd

    public static int decodeNoWhitespaceSimd(byte[] in, int inOffset, int inLength, byte[] out, int outOffset, int[] scratch)
    Compatibility overload that ignores the legacy scratch parameter.

  - ### encodeNoNewlineSimd

    public static int encodeNoNewlineSimd(byte[] in, byte[] out)
    Convenience overload for `encodeNoNewlineSimd(byte[], int, int, byte[], int)` using zero offsets.

  - ### encodeNoNewlineSimd

    public static int encodeNoNewlineSimd(byte[] in, byte[] out, int[] scratch)
    Convenience overload for `encodeNoNewlineSimd(byte[], int, int, byte[], int)` that preserves the legacy scratch-bearing signature.

  - ### decodeNoWhitespaceSimd

    public static int decodeNoWhitespaceSimd(byte[] in, int len, byte[] out)
    Convenience overload for `decodeNoWhitespaceSimd(byte[], int, int, byte[], int)` using zero input offset.

  - ### decodeNoWhitespaceSimd

    public static int decodeNoWhitespaceSimd(byte[] in, int len, byte[] out, int[] scratch)
    Convenience overload for `decodeNoWhitespaceSimd(byte[], int, int, byte[], int)` that preserves the legacy scratch-bearing signature.