X
4653

XDR- Short and Long Ints


While IDL states it supports an XDR_short type, when we write data to an XDR file, all IDL 2-byte INTs are converted to 4-byte LONGs. This may be a problem if you have a large amount of 2-byte data, such as some satellite data, and have space limitations in your file system or for file transfers.
IDL lists the following XDR data types:

    Byte    xdr_bytes()
    Integer    xdr_short()
    Long    xdr_long()
    Float    xdr_float()
    Double    xdr_double()
    Complex    xdr_complex()
    String    xdr_counted_string()

However, XDR only supports 4-byte integers, not 2-byte. Thus, anything stored in IDL as an INT (equivalent to a SHORT in C) will write out to an XDR-formatted file as a LONG integer.

XDR is a standardized platform and OS independent data format. However, in order to have such portability, the user gives up some control over their data and availability of many different data types.

The user should use WRITEU with a standard endian setting (check out the SWAP_IF* keywords to OPENW) instead of /XDR if the size of XDR files is a problem.

Note that these 4-byte whole numbers in XDR-formatted files can be restored into IDL as 2-byte INTs using "OPENR,/XDR" without any need for explicit type-casting.