Logo
Distributed Genetic Programming Framework
print print

File org.sfc.utils.BinaryRepresentation.java

Here you can find all the information about the file org.sfc.utils.BinaryRepresentation.java. You may explore it here or download it onto your local disk.
/*
 * Copyright (c) 2006 Thomas Weise
 * 
 * E-Mail           : tweise@gmx.de
 * Creation Date    : 2006-02-21 08:52:09
 * Original Filename: org.sfc.utils.BinaryRepresentation.java
 * Version          : 1.0.1
 * Last modification: 2006-02-21
 *                by: Thomas Weise
 * 
 * License          : GNU LESSER GENERAL PUBLIC LICENSE
 *                    Version 2.1, February 1999
 *                    You should have received a copy of this license along
 *                    with this library; if not, write to the Free Software
 *                    Foundation, Inc., 59 Temple Place, Suite 330, Boston,
 *                    MA 02111-1307, USA or download the license under
 *                    http://www.gnu.org/copyleft/lesser.html.
 *                    
 * Warranty         : This software is provided "as is" without any
 *                    warranty; without even the implied warranty of
 *                    merchantability or fitness for a particular purpose.
 *                    See the Gnu Lesser General Public License for more
 *                    details.
 */

 
package org.sfc.utils;

/**
 * This class helps you to create compatiple binary representations of
 * java's data types.
 *
 * @author Thomas Weise
 */

public final  class BinaryRepresentation
  {
  
/**
 * This hidden constructor stops you from instantiating this class.
 */

  private BinaryRepresentation()
    {
    Typesafe.do_not_call();
    }

/**
 * Store a byte into a data array.
 * @param p_data    The data to write into the array.
 * @param p_to      The array to write to.
 * @param p_index   The index to write at.
 */

  public  static  final void  write_byte  (final byte       p_data,
                                           final byte[]     p_to,
                                           final int        p_index)
    {
    p_to[p_index] = p_data;
    }
  
  
/**
 * Load a byte from a data array.
 * @param p_from    The data array to read from.
 * @param p_index   The index to read from.
 * @return  The data read.
 */

  public  static  final byte  read_byte   (final byte[]     p_from,
                                           final int        p_index)
    {
    return p_from[p_index];
    }
  
  
  

/**
 * Store a short into a data array.
 * @param p_data    The data to write into the array.
 * @param p_to      The array to write to.
 * @param p_index   The index to write at.
 */

  public  static  final void  write_short (final short      p_data,
                                           final byte[]     p_to,
                                           final int        p_index)
    {
    p_to[p_index]   = (byte)((p_data >>> 8) & 0xFF);
    p_to[p_index+1] = (byte)((p_data >>> 0) & 0xFF);
    }
  
  
/**
 * Load a short from a data array.
 * @param p_from    The data array to read from.
 * @param p_index   The index to read from.
 * @return  The data read.
 */

  public  static  final short read_short  (final byte[]     p_from,
                                           final int        p_index)
    {
    return (short)( (p_from[p_index] << 8) | (p_from[p_index+1] << 0));
    }
  

/**
 * Store an int into a data array.
 * @param p_data    The data to write into the array.
 * @param p_to      The array to write to.
 * @param p_index   The index to write at.
 */

  public  static  final void  write_int   (final int        p_data,
                                           final byte[]     p_to,
                                           final int        p_index)
    {
    p_to[p_index]   = (byte)((p_data >>> 24) & 0xFF);
    p_to[p_index+1] = (byte)((p_data >>> 16) & 0xFF);
    p_to[p_index+2] = (byte)((p_data >>>  8) & 0xFF);
    p_to[p_index+3] = (byte)((p_data >>>  0) & 0xFF);
    }
  
  
/**
 * Load an int from a data array.
 * @param p_from    The data array to read from.
 * @param p_index   The index to read from.
 * @return  The data read.
 */

  public  static  final int   read_int    (final byte[]     p_from,
                                           final int        p_index)
    {
    return ( (p_from[p_index]   << 24) | (p_from[p_index+1] << 16) |
             (p_from[p_index+2] <<  8) | (p_from[p_index+3] <<  0));
    }
  
  

/**
 * Store a long into a data array.
 * @param p_data    The data to write into the array.
 * @param p_to      The array to write to.
 * @param p_index   The index to write at.
 */

  public  static  final void  write_long  (final long       p_data,
                                           final byte[]     p_to,
                                           final int        p_index)
    {
    p_to[p_index]   = (byte)((p_data >>> 56) & 0xFF);
    p_to[p_index+1] = (byte)((p_data >>> 48) & 0xFF);
    p_to[p_index+2] = (byte)((p_data >>> 40) & 0xFF);
    p_to[p_index+3] = (byte)((p_data >>> 32) & 0xFF);
    p_to[p_index+4] = (byte)((p_data >>> 24) & 0xFF);
    p_to[p_index+5] = (byte)((p_data >>> 16) & 0xFF);
    p_to[p_index+6] = (byte)((p_data >>>  8) & 0xFF);
    p_to[p_index+7] = (byte)((p_data >>>  0) & 0xFF);
    }
  
  
/**
 * Load a long from a data array.
 * @param p_from    The data array to read from.
 * @param p_index   The index to read from.
 * @return  The data read.
 */

  public  static  final long  read_long   (final byte[]     p_from,
                                           final int        p_index)
    {
    return ( ( ((long)(p_from[p_index]))          << 56) |
             ( ((long)(p_from[p_index+1] & 0xff)) << 48) |
             ( ((long)(p_from[p_index+2] & 0xff)) << 40) |
             ( ((long)(p_from[p_index+3] & 0xff)) << 32) |
             ( ((long)(p_from[p_index+4] & 0xff)) << 24) |
             ( (p_from[p_index+5]        & 0xff)  << 16) |
             ( (p_from[p_index+6]        & 0xff)  <<  8) |
             ( (p_from[p_index+7]        & 0xff)  <<  0) );
    }
  
  


/**
 * Store a float into a data array.
 * @param p_data    The data to write into the array.
 * @param p_to      The array to write to.
 * @param p_index   The index to write at.
 */

  public  static  final void  write_float (final float      p_data,
                                           final byte[]     p_to,
                                           final int        p_index)
    {
    write_int(Float.floatToIntBits(p_data), p_to, p_index);
    }
  
  
/**
 * Load a float from a data array.
 * @param p_from    The data array to read from.
 * @param p_index   The index to read from.
 * @return  The data read.
 */

  public  static  final float read_float  (final byte[]     p_from,
                                           final int        p_index)
    {
    return Float.intBitsToFloat(read_int(p_from, p_index));
    }
  

/**
 * Store a double into a data array.
 * @param p_data    The data to write into the array.
 * @param p_to      The array to write to.
 * @param p_index   The index to write at.
 */

  public  static  final void  write_double(final double     p_data,
                                           final byte[]     p_to,
                                           final int        p_index)
    {
    write_long(Double.doubleToLongBits(p_data), p_to, p_index);
    }
  
  
/**
 * Load a double from a data array.
 * @param p_from    The data array to read from.
 * @param p_index   The index to read from.
 * @return  The data read.
 */

  public  static  final double read_double (final byte[]     p_from,
                                            final int        p_index)
    {
    return Double.longBitsToDouble(read_long(p_from, p_index));
    }
  

/**
 * Store a character into a data array.
 * @param p_data    The data to write into the array.
 * @param p_to      The array to write to.
 * @param p_index   The index to write at.
 */

  public  static  final void  write_char  (final char       p_data,
                                           final byte[]     p_to,
                                           final int        p_index)
    {
    write_short((short)p_data, p_to, p_index);
    }
  
  
/**
 * Load a character from a data array.
 * @param p_from    The data array to read from.
 * @param p_index   The index to read from.
 * @return  The data read.
 */

  public  static  final char   read_char   (final byte[]     p_from,
                                            final int        p_index)
    {
    return (char)read_short(p_from, p_index);
    }
  

/**
 * Store a boolean  into a data array.
 * @param p_data    The data to write into the array.
 * @param p_to      The array to write to.
 * @param p_index   The index to write at.
 */

  public  static  final void  write_boolean  (final boolean    p_data,
                                              final byte[]     p_to,
                                              final int        p_index)
    {
    write_byte(p_data ? ((byte)-1) : 0, p_to, p_index);
    }
  
  
/**
 * Load a boolean from a data array.
 * @param p_from    The data array to read from.
 * @param p_index   The index to read from.
 * @return  The data read.
 */

  public  static  final boolean read_boolean(final byte[]     p_from,
                                             final int        p_index)
    {
    return (read_byte(p_from, p_index) != 0);
    }
  
  }

File Information:

file name:BinaryRepresentation.java
package:org.sfc.utils
qualified name:org.sfc.utils.BinaryRepresentation.java
file type:Java Source File
download location:download http://dgpf.sourceforge.net/source/org/sfc/utils/BinaryRepresentation.java
size:9.252 KB (9475 B)
uploaded: 2018-01-07 12:03:36 GMT+0000
last update: 2006-03-07 04:20:35 GMT+0000
last access: 2018-04-26 03:57:57 GMT+0000

statistics online since 2006-01-02.   RSS Feed
Contact us by sending an email to tweise@gmx.de to receive further information, to report errors, or to join our project.
All content on this site (http://dgpf.sourceforge.net/) is LGPL-licensed.
http://dgpf.sourceforge.net/scripts/source/source.php last modified at 2018-01-07 12:03:34 GMT+0000 served at 2018-04-26 03:57:57 GMT+0000.
Valid CSS Valid XHTML 1.1
Valid RSS SourceForge.net Logo