schmitzm.io
Class BinaryUtil

java.lang.Object
  extended by schmitzm.io.BinaryUtil

public class BinaryUtil
extends Object


Diese Klasse wurde urspruenglich 2002/2003 von Martin Schmitz fuer die ADAGIOS-Java-Library (Universitaet Bonn) erstellt, 2009 in das SCHMITZM-Projekt uebernommen und teilweise erweitert.
Diese Klasse enthaelt statische Methoden, die das Arbeiten mit Binaerstrings erleichtern.

Version:
1.0
Author:
Martin Schmitz (University of Bonn/Germany)

Field Summary
static byte NDR
          Numerische Konstante fuer die ByteOrder 'Little Endian'.
static byte XDR
          Numerische Konstante fuer die ByteOrder 'Big Endian'.
 
Constructor Summary
BinaryUtil()
           
 
Method Summary
static double convertBytesToDouble(byte byteOrder, byte[] bytes)
          Konvertiert 8 Bytes in einen double-Wert.
static double convertBytesToDouble(byte byteOrder, InputStream input)
          Konvertiert 8 Bytes eines Streams in einen double-Wert.
static float convertBytesToFloat(byte byteOrder, byte[] bytes)
          Konvertiert 4 Bytes in einen float-Wert.
static float convertBytesToFloat(byte byteOrder, InputStream input)
          Konvertiert 4 Bytes eines Streams in einen float-Wert.
static long convertBytesToLong(byte byteOrder, byte[] bytes)
          Konvertiert eine Reihe von Bytes in einen long-Wert.
static long convertBytesToLong(byte byteOrder, InputStream input, int byteCount)
          Konvertiert Bytes eines Streams in einen long-Wert.
static byte[] convertDoubleToBytes(byte byteOrder, double value)
          Konvertiert einen double-Wert in 8 Bytes.
static int[] convertDoubleToUnsignedBytes(byte byteOrder, double value)
          Konvertiert einen double-Wert in 8 Bytes.
static byte[] convertFloatToBytes(byte byteOrder, float value)
          Konvertiert einen float-Wert in 4 Bytes.
static int[] convertFloatToUnsignedBytes(byte byteOrder, float value)
          Konvertiert einen float-Wert in 4 Bytes.
static byte[] convertLongToBytes(byte byteOrder, long value, int size)
          Konvertiert einen long-Wert in eine Reihe von Bytes.
static int[] convertLongToUnsignedBytes(byte byteOrder, long value, int size)
          Konvertiert einen long-Wert in eine Reihe von Bytes.
static int getUnsignedByte(byte b)
          Konvertiert einen byte-Wert (-128..127) in ein unsigned byte (0..255).
static int[] getUnsignedBytes(byte[] signedByte)
          Konvertiert einen Array von byte-Werten (-128..127) in einen Array von unsigned bytes (0..255).
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

XDR

public static final byte XDR
Numerische Konstante fuer die ByteOrder 'Big Endian'.
Dabei steht das hoechstwertige Byte im ERSTEN Byte einer Folge.

See Also:
Constant Field Values

NDR

public static final byte NDR
Numerische Konstante fuer die ByteOrder 'Little Endian'.
Dabei steht das niederstwertige Byte im ERSTEN Byte einer Folge.

See Also:
Constant Field Values
Constructor Detail

BinaryUtil

public BinaryUtil()
Method Detail

convertBytesToLong

public static long convertBytesToLong(byte byteOrder,
                                      InputStream input,
                                      int byteCount)
                               throws IOException
Konvertiert Bytes eines Streams in einen long-Wert.

Parameters:
byteOrder - 0 = BigEndian = hoechstwertiges Byte zuerst, 1 = LittleEndian = niederwertigstes Byte zuerst
input - Eingabe-Stream
byteCount - Anzahl der Bytes, die aus dem Stream gelesen und in einen Long umgewandelt werden sollen
Throws:
IOException - falls das Lesen aus dem Stream scheitert
EOFException - falls nicht genug Bytes auf dem Stream liegen

convertBytesToLong

public static long convertBytesToLong(byte byteOrder,
                                      byte[] bytes)
Konvertiert eine Reihe von Bytes in einen long-Wert.
Fuer negative Werte wird eine Darstellung im 2er-Komplement erwartet.

Parameters:
byteOrder - 0 = BigEndian = hoechstwertiges Byte zuerst, 1 = LittleEndian = niederwertigstes Byte zuerst
bytes - Eingabe-Bytes

convertBytesToFloat

public static float convertBytesToFloat(byte byteOrder,
                                        InputStream input)
                                 throws IOException
Konvertiert 4 Bytes eines Streams in einen float-Wert.

Parameters:
byteOrder - 0 = BigEndian = hoechstwertiges Byte zuerst, 1 = LittleEndian = niederwertigstes Byte zuerst
input - Eingabe-Stream
Throws:
IOException - falls das Lesen aus dem Stream scheitert
EOFException - falls nicht genug Bytes auf dem Stream liegen

convertBytesToFloat

public static float convertBytesToFloat(byte byteOrder,
                                        byte[] bytes)
Konvertiert 4 Bytes in einen float-Wert.

Parameters:
byteOrder - 0 = BigEndian = hoechstwertiges Byte zuerst, 1 = LittleEndian = niederwertigstes Byte zuerst
bytes - 8 Eingabe-Bytes

convertBytesToDouble

public static double convertBytesToDouble(byte byteOrder,
                                          InputStream input)
                                   throws IOException
Konvertiert 8 Bytes eines Streams in einen double-Wert.

Parameters:
byteOrder - 0 = BigEndian = hoechstwertiges Byte zuerst, 1 = LittleEndian = niederwertigstes Byte zuerst
input - Eingabe-Stream
Throws:
IOException - falls das Lesen aus dem Stream scheitert
EOFException - falls nicht genug Bytes auf dem Stream liegen

convertBytesToDouble

public static double convertBytesToDouble(byte byteOrder,
                                          byte[] bytes)
Konvertiert 8 Bytes in einen double-Wert.

Parameters:
byteOrder - 0 = BigEndian = hoechstwertiges Byte zuerst, 1 = LittleEndian = niederwertigstes Byte zuerst
bytes - 8 Eingabe-Bytes

convertLongToBytes

public static byte[] convertLongToBytes(byte byteOrder,
                                        long value,
                                        int size)
Konvertiert einen long-Wert in eine Reihe von Bytes. Fuer negative Werte wird das 2er-Komplement verwendet.

Parameters:
byteOrder - 0 = BigEndian = hoechstwertiges Byte zuerst, 1 = LittleEndian = niederwertigstes Byte zuerst
value - Eingabewert
size - Groesse des Rueckgabe-Arrays; unbenoetigte Felder werden aufgefuellt (fuer negative Werte mit 1, sonst mit 0);
Bei size=0 ist der Rueckgabe-Array genau so gross wie noetig.
Throws:
java.lang.ArrayIndexOutOfBoundException - falls der long-Wert nicht in den Rueckgabe-Array passt.

convertLongToUnsignedBytes

public static int[] convertLongToUnsignedBytes(byte byteOrder,
                                               long value,
                                               int size)
Konvertiert einen long-Wert in eine Reihe von Bytes. Fuer negative Werte wird das 2er-Komplement verwendet. Die Bytes werden allerdings nicht als byte zurueckgegeben, sondern als int, der einen unsigned byte simuliert.
Es werden also immer positive Werte zurueckgegeben!!

Parameters:
byteOrder - 0 = BigEndian = hoechstwertiges Byte zuerst, 1 = LittleEndian = niederwertigstes Byte zuerst
value - Eingabewert
size - Groesse des Rueckgabe-Arrays; unbenoetigte Felder werden aufgefuellt (fuer negative Werte mit 1, sonst mit 0);
Bei size=0 ist der Rueckgabe-Array genau so gross wie noetig.
Throws:
java.lang.ArrayIndexOutOfBoundException - falls der long-Wert nicht in den Rueckgabe-Array passt.

getUnsignedByte

public static int getUnsignedByte(byte b)
Konvertiert einen byte-Wert (-128..127) in ein unsigned byte (0..255). Der Rueckgabetyp muss hierfuer ein int sein.

Parameters:
b - Wert zwischen -128 und 127
Returns:
(int)b & 255

getUnsignedBytes

public static int[] getUnsignedBytes(byte[] signedByte)
Konvertiert einen Array von byte-Werten (-128..127) in einen Array von unsigned bytes (0..255). Der Rueckgabetyp muss hierfuer ein int sein.

Parameters:
signedByte - byte-Array

convertFloatToBytes

public static byte[] convertFloatToBytes(byte byteOrder,
                                         float value)
Konvertiert einen float-Wert in 4 Bytes.

Parameters:
byteOrder - 0 = BigEndian = hoechstwertiges Byte zuerst, 1 = LittleEndian = niederwertigstes Byte zuerst
value - Eingabewert
Returns:
byte[4]

convertFloatToUnsignedBytes

public static int[] convertFloatToUnsignedBytes(byte byteOrder,
                                                float value)
Konvertiert einen float-Wert in 4 Bytes. Die Bytes werden allerdings nicht als byte zurueckgegeben, sondern als int, der einen unsigned byte simuliert.
Es werden also immer positive Werte zurueckgegeben!!

Parameters:
byteOrder - 0 = BigEndian = hoechstwertiges Byte zuerst, 1 = LittleEndian = niederwertigstes Byte zuerst
value - Eingabewert
Returns:
byte[4]

convertDoubleToBytes

public static byte[] convertDoubleToBytes(byte byteOrder,
                                          double value)
Konvertiert einen double-Wert in 8 Bytes.

Parameters:
byteOrder - 0 = BigEndian = hoechstwertiges Byte zuerst, 1 = LittleEndian = niederwertigstes Byte zuerst
value - Eingabewert
Returns:
byte[8]

convertDoubleToUnsignedBytes

public static int[] convertDoubleToUnsignedBytes(byte byteOrder,
                                                 double value)
Konvertiert einen double-Wert in 8 Bytes. Die Bytes werden allerdings nicht als byte zurueckgegeben, sondern als int, der einen unsigned byte simuliert.
Es werden also immer positive Werte zurueckgegeben!!

Parameters:
byteOrder - 0 = BigEndian = hoechstwertiges Byte zuerst, 1 = LittleEndian = niederwertigstes Byte zuerst
value - Eingabewert
Returns:
byte[8]