Data

extension Data
extension Data: XDRCodable

Extension providing base32 encoding and decoding for Data.

Supports both standard base32 (RFC 4648) and base32hex variants. Used extensively in Stellar’s StrKey encoding for account addresses and keys.

  • Encodes data to a base32 string.

    Uses the standard base32 alphabet (A-Z, 2-7).

    Example:

    let data = Data([72, 101, 108, 108, 111])
    let encoded = data.base32EncodedString // "JBSWY3DP"
    

    Declaration

    Swift

    public var base32EncodedString: String { get }
  • Encodes data to base32 format as Data.

    Returns the base32-encoded string as UTF-8 data.

    Example:

    let data = Data([72, 101, 108, 108, 111])
    let encodedData = data.base32EncodedData
    

    Declaration

    Swift

    public var base32EncodedData: Data { get }
  • Decodes base32-encoded data.

    Assumes the data contains a UTF-8 encoded base32 string.

    Example:

    let encoded = "JBSWY3DP".data(using: .utf8)!
    if let decoded = encoded.base32DecodedData {
        // Use decoded data
    }
    

    Declaration

    Swift

    public var base32DecodedData: Data? { get }

    Return Value

    Decoded data, or nil if decoding fails

  • Encodes data to a base32hex string.

    Uses the extended hex alphabet (0-9, A-V).

    Example:

    let data = Data([72, 101, 108, 108, 111])
    let encoded = data.base32HexEncodedString
    

    Declaration

    Swift

    public var base32HexEncodedString: String { get }
  • Encodes data to base32hex format as Data.

    Returns the base32hex-encoded string as UTF-8 data.

    Declaration

    Swift

    public var base32HexEncodedData: Data { get }
  • Decodes base32hex-encoded data.

    Assumes the data contains a UTF-8 encoded base32hex string.

    Declaration

    Swift

    public var base32HexDecodedData: Data? { get }

    Return Value

    Decoded data, or nil if decoding fails

  • Options for base16 encoding.

    See more

    Declaration

    Swift

    enum Base16EncodingOptions
  • Encodes data to a base16 (hexadecimal) string.

    Declaration

    Swift

    func base16EncodedString(options: [Base16EncodingOptions] = []) -> String

    Parameters

    options

    Encoding options

    Return Value

    Hexadecimal string representation

  • Encodes data to base16 format as Data (UTF-8 bytes of hex string).

    Declaration

    Swift

    func base16EncodedData(options: [Base16EncodingOptions] = []) -> Data

    Parameters

    options

    Encoding options

    Return Value

    UTF-8 encoded hexadecimal string as Data

  • Creates data from a base16 (hexadecimal) encoded string.

    Throws

    Base16EncodingError if the string is invalid

    Declaration

    Swift

    init(base16Encoded string: String) throws

    Parameters

    string

    Hexadecimal string (even length, case insensitive)

  • Creates data from base16 (hexadecimal) encoded UTF-8 Data.

    Throws

    Base16EncodingError if the data is invalid

    Declaration

    Swift

    init(base16Encoded data: Data) throws

    Parameters

    data

    UTF-8 encoded hexadecimal string as Data

  • Computes the SHA-256 hash of the data.

    Declaration

    Swift

    var sha256Hash: Data { get }
  • Encodes data to strkey ed25519 public key (“G…”).

    Declaration

    Swift

    public func encodeEd25519PublicKey() throws -> String
  • Encodes data to strkey ed25519 seed (“S…”).

    Declaration

    Swift

    public func encodeEd25519SecretSeed() throws -> String
  • Encodes data to strkey med25519 public key. (“M…”)

    Declaration

    Swift

    public func encodeMEd25519AccountId() throws -> String
  • Encodes data to strkey preAuthTx. (“T…”)

    Declaration

    Swift

    public func encodePreAuthTx() throws -> String
  • Encodes data to strkey sha256 hash. (“X…”)

    Declaration

    Swift

    public func encodeSha256Hash() throws -> String
  • Encodes raw data to strkey signed payload (“P…”).

    Declaration

    Swift

    public func encodeSignedPayload() throws -> String
  • Encodes raw data to strkey contract id (“C…”).

    Declaration

    Swift

    public func encodeContractId() throws -> String
  • Encodes raw data to strkey claimable balance (“B…”).

    Declaration

    Swift

    public func encodeClaimableBalanceId() throws -> String
  • Encodes raw data to strkey liquidity pool id (“L…”).

    Declaration

    Swift

    public func encodeLiquidityPoolId() throws -> String
  • Encodes raw data representing a MuxedAccountXDR to strkey muxed account id (“M…”).

    Declaration

    Swift

    public func encodeMuxedAccount() throws -> String
  • Encodes data to XDR format with automatic padding.

    Encodes the byte count followed by the bytes, padded to a 4-byte boundary.

    Declaration

    Swift

    public func xdrEncode(to encoder: XDREncoder) throws
  • Encodes data to XDR format without length prefix (fixed-size encoding).

    Used for fixed-size byte arrays where the length is known in advance.

    Declaration

    Swift

    public func xdrEncodeFixed(to encoder: XDREncoder) throws
  • Decodes variable-length data from XDR format.

    Reads the byte count, then the bytes, consuming any padding bytes.

    Declaration

    Swift

    public init(fromBinary decoder: XDRDecoder) throws
  • Decodes fixed-size data from XDR format.

    Reads exactly the specified number of bytes without a length prefix.

    Declaration

    Swift

    public init(fromBinary xdrDecoder: XDRDecoder, count: Int) throws

    Parameters

    xdrDecoder

    Decoder to read from

    count

    Number of bytes to read