/*! ******************************************************************************
*
* Pentaho Data Integration
*
* Copyright (C) 2002-2016 by Pentaho : http://www.pentaho.com
*
*******************************************************************************
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
******************************************************************************/
package org.pentaho.gis.shapefiles;
/*
* Created on 13-mei-04
*
* @author Matt
*
*/
public class Converter {
public static final int getIntegerLittle( byte[] b, int pos ) {
int[] bi = new int[4];
for ( int i = 0; i < 4; i++ ) {
bi[i] = b[pos + i];
if ( bi[i] < 0 ) {
bi[i] += 256;
}
}
return ( bi[0] ) + ( bi[1] << 8 ) + ( bi[2] << 16 ) + ( bi[3] << 24 );
}
public static final int getIntegerBig( byte[] b, int pos ) {
int[] bi = new int[4];
for ( int i = 0; i < 4; i++ ) {
bi[i] = b[pos + i];
if ( bi[i] < 0 ) {
bi[i] += 256;
}
}
return ( bi[3] ) + ( bi[2] << 8 ) + ( bi[1] << 16 ) + ( bi[0] << 24 );
}
public static final long getLongLittle( byte[] b, int pos ) {
long[] bi = new long[8];
for ( int i = 0; i < 8; i++ ) {
bi[i] = b[pos + i];
if ( bi[i] < 0 ) {
bi[i] += 256;
}
}
return ( bi[0] )
+ ( bi[1] << 8 )
+ ( bi[2] << 16 )
+ ( bi[3] << 24 )
+ ( bi[4] << 32 )
+ ( bi[5] << 40 )
+ ( bi[6] << 48 )
+ ( bi[7] << 56 );
}
public static final long getLongBig( byte[] b, int pos ) {
long[] bi = new long[8];
for ( int i = 0; i < 8; i++ ) {
bi[i] = b[pos + i];
if ( bi[i] < 0 ) {
bi[i] += 256;
}
}
return ( bi[7] )
+ ( bi[6] << 8 )
+ ( bi[5] << 16 )
+ ( bi[4] << 24 )
+ ( bi[3] << 32 )
+ ( bi[2] << 40 )
+ ( bi[1] << 48 )
+ ( bi[0] << 56 );
}
// Convert ESRI double
public static final double getDoubleLittle( byte[] b, int pos ) {
return Double.longBitsToDouble( getLongLittle( b, pos ) );
}
// Convert ESRI double
public static final double getDoubleBig( byte[] b, int pos ) {
return Double.longBitsToDouble( getLongBig( b, pos ) );
}
}