Each of the base-type and type constructor variables has an external representation defined by the OPeNDAP data access protocol. This representation is used when an object of the given type is transferred from one computer to another. Defining a single external representation simplifies the translation of variables from one computer to another when those computers use different internal representations for those variable types.
| Base Type | XDR Type |
| Byte | xdr byte |
| Int32 | xdr long |
| UInt32 | xdr unsigned long |
| Float64 | xdr double |
| String | xdr string |
| URL | xdr string |
The data access protocol uses Sun Microsystems' XDR protocol[6] for the external representation of all of the base type variables. table 6.3.4 shows the XDR types used to represent the various base type variables.
In order to transmit constructor type variables, the data access protocol defines how the various base type variables, which comprise the constructor type variables, are transmitted. Any constructor type variable may be subject to a constraint expression which changes the amount of data transmitted for the variable (see Section 4.1 for more information about constraint expressions.). For each of the six constructor types these definitions are:
xdr_array function. This means that an Array of 100
Int32s is sent as a single block of 100 xdr longs, not
100 separate xdr longs.
The external data representation used by an OPeNDAP server and client may
be compressed, depending on the configuration of the respective
machines. The compression is done using the gzip program.
Only the data transmission itself will be affected by this; the
transmission of the ancillary data is not compressed.