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.