Project: 3Dto2DApplet
/*
# BinaryUtils.java 
# copyright (c) 2009-2010, Danny Arends 
# last modified Dec, 2010 
# first written Dec, 2010 
#     This program is free software; you can redistribute it and/or 
#     modify it under the terms of the GNU General Public License, 
#     version 3, as published by the Free Software Foundation. 
#  
#     This program is distributed in the hope that it will be useful, 
#     but without any warranty; without even the implied warranty of 
#     merchantability or fitness for a particular purpose.  See the GNU 
#     General Public License, version 3, for more details. 
#  
#     A copy of the GNU General Public License, version 3, is available 
#     at http://www.r-project.org/Licenses/GPL-3 
*/
 
package nl.dannyarends.generic; 
 
import java.io.IOException; 
import java.io.InputStream; 
 
public class BinaryUtils { 
 static int maxchars = 20
 
 public static double arr2double (byte[] b) { 
  int i = 0
  int len = 8
  int cnt = 0
  byte[] tmp = new byte[len]; 
  for (i = 0; i < len; i++) { 
   tmp[cnt] = b[i]; 
   cnt++; 
  
  long accum = 0
  i = 0
  for ( int shiftBy = 0; shiftBy < 64; shiftBy += 8 ) { 
   accum |= ( (long)( tmp[i] & 0xff ) ) << shiftBy; 
   i++; 
  
  return Double.longBitsToDouble(accum); 
 
  
 public static float arr2float (byte[] b) { 
  int i = 0
  int len = 4
  int cnt = 0
  byte[] tmp = new byte[len]; 
  for (i = 0; i < len; i++) { 
   tmp[cnt] = b[i]; 
   cnt++; 
  
  int accum = 0
  i = 0
  for ( int shiftBy = 0; shiftBy < 32; shiftBy += 8 ) { 
   accum |= ( (long)( tmp[i] & 0xff ) ) << shiftBy; 
   i++; 
  
  return Float.intBitsToFloat(accum); 
 
 
  
 public static long arr2long (byte[] b) { 
  int i = 0
  int len = 4
  int cnt = 0
  byte[] tmp = new byte[len]; 
  for (i = 0; i < len; i++) { 
   tmp[cnt] = b[i]; 
   cnt++; 
  
  long accum = 0
  i = 0
  for ( int shiftBy = 0; shiftBy < 32; shiftBy += 8 ) { 
   accum |= ( (long)( tmp[i] & 0xff ) ) << shiftBy; 
   i++; 
  
  return accum; 
 
  
 public static int arr2int (byte[] b) { 
  int low = b[0] & 0xff
  int high = b[1] & 0xff
  return (int)( high << 8 | low ); 
 
  
 public static String read3dsstring(InputStream stream){ 
  String s = ""
  int i=0
  int l_char = '\0'; 
  do
   if(l_char != '\0')s += ((char)l_char); 
   try { 
    l_char = stream.read(); 
   catch (IOException e) { 
    e.printStackTrace(); 
   
   i++; 
  }while(l_char != '\0' && i < maxchars); 
  return s; 
 
}