com.pixelmed.dicom

## Class BinaryInputStream

- java.lang.Object
- - java.io.InputStream
  - - java.io.FilterInputStream
    - - com.pixelmed.dicom.BinaryInputStream

All Implemented Interfaces:
  java.io.Closeable, java.lang.AutoCloseable

Direct Known Subclasses:
  DicomInputStream

    public class BinaryInputStream
    extends java.io.FilterInputStream

A class that extends `FilterInputStream` by adding the concept of little and big endian binary value encoding, and supplies functions for reading various sized integer and floating point words.

See Also:
  `BinaryOutputStream`

### Field Summary

### Fields inherited from class java.io.FilterInputStream

`in`

### Constructor Summary

Constructors
Constructor and Description
`BinaryInputStream(java.io.File file, boolean big)` Construct a byte ordered stream from the supplied file.
`BinaryInputStream(java.io.InputStream i, boolean big)` Construct a byte ordered stream from the supplied stream.

### Method Summary

Methods
`java.io.File` `getFile()` Get the file associated with this stream.
`boolean` `isBigEndian()` Is the stream byte order big endian ?
`boolean` `isLittleEndian()` Is the stream byte order little endian ?
`static void` `main(java.lang.String[] arg)` For testing.
`void` `readComplexDouble(double[] freal, double[] fimaginary, int len)` Read interleaved complex floating point 64 bit value pairs into real and imaginary arrays.
`void` `readComplexFloat(float[] freal, float[] fimaginary, int len)` Read interleaved complex floating point 32 bit value pairs into real and imaginary arrays.
`double` `readDouble()` Read one floating point 64 bit value.
`void` `readDouble(double[] f, int len)` Read an array of floating point 64 bit values.
`float` `readFloat()` Read one floating point 32 bit value.
`void` `readFloat(float[] f, int len)` Read an array of floating point 32 bit values.
`void` `readInsistently(byte[] b, int offset, int length)` Read as many bytes as requested, unless an exception occurs.
`int` `readSigned16()` Read one signed integer 16 bit value.
`int` `readSigned32()` Read one signed integer 32 bit value.
`int` `readUnsigned16()` Read one unsigned integer 16 bit value.
`void` `readUnsigned16(short[] w, int len)` Read an array of unsigned integer 16 bit values.
`void` `readUnsigned16(short[] w, int offset, int len)` Read an array of unsigned integer 16 bit values.
`long` `readUnsigned32()` Read one unsigned integer 32 bit value.
`int` `readUnsigned8()` Read one unsigned integer 8 bit value.
`void` `setBigEndian()` Set the stream byte order to big endian.
`void` `setEndian(boolean big)` Set the stream byte order to that specified.
`void` `setFile(java.io.File file)` Set the file associated with this stream.
`void` `setLittleEndian()` Set the stream byte order to little endian.
`void` `skipInsistently(long length)` Skip as many bytes as requested, unless an exception occurs.

### Methods inherited from class java.io.FilterInputStream

`available, close, mark, markSupported, read, read, read, reset, skip`

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

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

### Constructor Detail

#### BinaryInputStream

    public BinaryInputStream(java.io.File file,
                     boolean big)
                      throws java.io.FileNotFoundException

Construct a byte ordered stream from the supplied file.

The byte order may be changed later.

Parameters:
  `file` - the file to read from
  `big` - true if big endian, false if little endian
Throws:
  `java.io.FileNotFoundException`

#### BinaryInputStream

    public BinaryInputStream(java.io.InputStream i,
                     boolean big)

Construct a byte ordered stream from the supplied stream.

The byte order may be changed later.

Parameters:
  `i` - the input stream to read from
  `big` - true if big endian, false if little endian

### Method Detail

#### getFile

    public java.io.File getFile()

Get the file associated with this stream.

Returns:
  file the file, or null if not a file input stream

#### setFile

    public void setFile(java.io.File file)

Set the file associated with this stream.

This may be used if constructed with a constructor that does not supply a `File` parameter, e.g., has been indirected through a `BufferedInputStream`.

Parameters:
  `file` - the file associated with this stream, or null if not a file input stream

#### isBigEndian

    public boolean isBigEndian()

Is the stream byte order big endian ?

Returns:
  true if big endian, false if little endian

#### isLittleEndian

    public boolean isLittleEndian()

Is the stream byte order little endian ?

Returns:
  true if little endian, false if big endian

#### setBigEndian

    public void setBigEndian()

Set the stream byte order to big endian.

#### setLittleEndian

    public void setLittleEndian()

Set the stream byte order to little endian.

#### setEndian

    public void setEndian(boolean big)

Set the stream byte order to that specified.

Parameters:
  `big` - true if to set to big endian, false if little endian

#### readInsistently

    public void readInsistently(byte[] b,
                       int offset,
                       int length)
                         throws java.io.IOException

Read as many bytes as requested, unless an exception occurs.

Parameters:
  `b` - buffer to read into
  `offset` - offset (from 0) in buffer to read into
  `length` - number of bytes to read (no more and no less)
Throws:
  `java.io.IOException`

#### skipInsistently

    public void skipInsistently(long length)
                         throws java.io.IOException

Skip as many bytes as requested, unless an exception occurs.

Parameters:
  `length` - number of bytes to read (no more and no less)
Throws:
  `java.io.IOException`

#### readUnsigned8

    public final int readUnsigned8()
                            throws java.io.IOException

Read one unsigned integer 8 bit value.

Returns:
  an int containing an unsigned value
Throws:
  `java.io.IOException`

#### readUnsigned16

    public final int readUnsigned16()
                             throws java.io.IOException

Read one unsigned integer 16 bit value.

Returns:
  an int containing an unsigned value
Throws:
  `java.io.IOException`

#### readSigned16

    public final int readSigned16()
                           throws java.io.IOException

Read one signed integer 16 bit value.

Returns:
  an int containing an unsigned value
Throws:
  `java.io.IOException`

#### readUnsigned32

    public final long readUnsigned32()
                              throws java.io.IOException

Read one unsigned integer 32 bit value.

Returns:
  a long containing an unsigned value
Throws:
  `java.io.IOException`

#### readSigned32

    public final int readSigned32()
                           throws java.io.IOException

Read one signed integer 32 bit value.

Returns:
  an int containing an signed value
Throws:
  `java.io.IOException`

#### readFloat

    public final float readFloat()
                          throws java.io.IOException

Read one floating point 32 bit value.

Returns:
  a float value
Throws:
  `java.io.IOException`

#### readDouble

    public final double readDouble()
                            throws java.io.IOException

Read one floating point 64 bit value.

Returns:
  a double value
Throws:
  `java.io.IOException`

#### readUnsigned16

    public final void readUnsigned16(short[] w,
                      int len)
                              throws java.io.IOException

Read an array of unsigned integer 16 bit values.

Parameters:
  `w` - an array of sufficient size in which to return the values read
  `len` - the number of 16 bit values to read
Throws:
  `java.io.IOException`

#### readUnsigned16

    public final void readUnsigned16(short[] w,
                      int offset,
                      int len)
                              throws java.io.IOException

Read an array of unsigned integer 16 bit values.

Parameters:
  `w` - an array of sufficient size in which to return the values read
  `offset` - the offset in the array at which to begin storing values
  `len` - the number of 16 bit values to read
Throws:
  `java.io.IOException`

#### readFloat

    public final void readFloat(float[] f,
                 int len)
                         throws java.io.IOException

Read an array of floating point 32 bit values.

Parameters:
  `f` - an array of sufficient size in which to return the values read
  `len` - the number of 32 bit values to read
Throws:
  `java.io.IOException`

#### readComplexFloat

    public final void readComplexFloat(float[] freal,
                        float[] fimaginary,
                        int len)
                                throws java.io.IOException

Read interleaved complex floating point 32 bit value pairs into real and imaginary arrays.

Parameters:
  `freal` - an array of sufficient size in which to return the real values read, may be null if don't want real values
  `fimaginary` - an array of sufficient size in which to return the real values read, may be null if don't want imaginary values
  `len` - the number of 32 bit values to read
Throws:
  `java.io.IOException`

#### readDouble

    public final void readDouble(double[] f,
                  int len)
                          throws java.io.IOException

Read an array of floating point 64 bit values.

Parameters:
  `f` - an array of sufficient size in which to return the values read
  `len` - the number of 64 bit values to read
Throws:
  `java.io.IOException`

#### readComplexDouble

    public final void readComplexDouble(double[] freal,
                         double[] fimaginary,
                         int len)
                                 throws java.io.IOException

Read interleaved complex floating point 64 bit value pairs into real and imaginary arrays.

Parameters:
  `freal` - an array of sufficient size in which to return the real values read, may be null if don't want real values
  `fimaginary` - an array of sufficient size in which to return the real values read, may be null if don't want imaginary values
  `len` - the number of 64 bit values to read
Throws:
  `java.io.IOException`

#### main

    public static void main(java.lang.String[] arg)

For testing.

Parameters:
  `arg` -