@ -17,6 +17,14 @@ public class ByteConverter {
//default for AC35 is Little Endian therefore all overloads will be done with Little_Endian unless told else wise
//////////////////////////////////////////////////
//Bytes[] to number conversions
//////////////////////////////////////////////////
//////////////////////////////////////////////////
//Integer
//////////////////////////////////////////////////
public static int bytesToInt ( byte bite ) {
byte [ ] bytes = { bite } ;
return bytesToInt ( bytes , ByteOrder . LITTLE_ENDIAN ) ;
@ -27,31 +35,14 @@ public class ByteConverter {
}
public static int bytesToInt ( byte [ ] bytes , ByteOrder byteOrder ) {
byte [ ] bites = new byte [ 4 ] ;
if ( byteOrder = = ByteOrder . LITTLE_ENDIAN ) {
for ( int i = 0 ; i < bytes . length ; i + + ) {
bites [ i ] = bytes [ i ] ;
if ( i > 4 ) { //break if over the limit
break ;
}
}
for ( int i = bytes . length ; i < 4 ; i + + ) {
bites [ i ] = 0b0 ;
}
} else { //if big endian
for ( int i = 0 ; i < 4 - bytes . length ; i + + ) {
bites [ i ] = 0b0 ;
}
for ( int i = 4 - bytes . length ; i < 4 ; i + + ) {
bites [ i ] = bytes [ i ] ;
if ( i > 4 ) { //break if over the limit
break ;
}
}
}
byte [ ] bites = convertBytesToNum ( bytes , byteOrder , IntegerSize ) ;
return ByteBuffer . wrap ( bites ) . order ( byteOrder ) . getInt ( ) ;
}
//////////////////////////////////////////////////
//Long
//////////////////////////////////////////////////
public static long bytesToLong ( byte bite ) {
byte [ ] bytes = { bite } ;
return bytesToLong ( bytes , ByteOrder . LITTLE_ENDIAN ) ;
@ -62,71 +53,84 @@ public class ByteConverter {
}
public static long bytesToLong ( byte [ ] bytes , ByteOrder byteOrder ) {
byte [ ] bites = new byte [ 8 ] ;
if ( byteOrder = = ByteOrder . LITTLE_ENDIAN ) {
for ( int i = 0 ; i < bytes . length ; i + + ) {
bites [ i ] = bytes [ i ] ;
if ( i > 8 ) { //break if over hte limit
break ;
}
}
for ( int i = bytes . length ; i < 8 ; i + + ) {
bites [ i ] = 0b0 ;
}
} else { //if big endian
for ( int i = 0 ; i < 8 - bytes . length ; i + + ) {
bites [ i ] = 0b0 ;
}
for ( int i = 8 - bytes . length ; i < 8 ; i + + ) {
bites [ i ] = bytes [ i ] ;
if ( i > 8 ) { //break if over the limit
break ;
}
}
}
byte [ ] bites = convertBytesToNum ( bytes , byteOrder , LongSize ) ;
return ByteBuffer . wrap ( bites ) . order ( byteOrder ) . getLong ( ) ;
}
//////////////////////////////////////////////////
//Short
//////////////////////////////////////////////////
public static short bytesToShort ( byte bite ) {
byte [ ] bytes = { bite } ;
return bytesToShort ( bytes , ByteOrder . LITTLE_ENDIAN ) ;
}
public static short bytesToShort ( byte bite , ByteOrder byteOrder ) {
byte [ ] bytes = { bite } ;
return bytesToShort ( bytes , byteOrder ) ;
}
public static short bytesToShort ( byte [ ] bytes ) {
return bytesToShort ( bytes , ByteOrder . LITTLE_ENDIAN ) ;
}
public static short bytesToShort ( byte [ ] bytes , ByteOrder byteOrder ) {
byte [ ] bites = new byte [ 2 ] ;
byte [ ] bites = convertBytesToNum ( bytes , byteOrder , ShortSize ) ;
return ByteBuffer . wrap ( bites ) . order ( byteOrder ) . getShort ( ) ;
}
//////////////////////////////////////////////////
//Char
//////////////////////////////////////////////////
public static char bytesToChar ( byte bite ) {
byte [ ] bytes = { bite } ;
return bytesToChar ( bytes , ByteOrder . LITTLE_ENDIAN ) ;
}
public static char bytesToChar ( byte [ ] bytes ) {
return bytesToChar ( bytes , ByteOrder . LITTLE_ENDIAN ) ;
}
public static char bytesToChar ( byte [ ] bytes , ByteOrder byteOrder ) {
byte [ ] bites = convertBytesToNum ( bytes , byteOrder , CharSize ) ;
return ByteBuffer . wrap ( bites ) . order ( byteOrder ) . getChar ( ) ;
}
//////////////////////////////////////////////////
//Conversion Function
//////////////////////////////////////////////////
private static byte [ ] convertBytesToNum ( byte [ ] bytes , ByteOrder byteOrder , int maxSize ) {
byte [ ] bites = new byte [ maxSize ] ;
if ( byteOrder = = ByteOrder . LITTLE_ENDIAN ) {
for ( int i = 0 ; i < bytes . length ; i + + ) {
bites [ i ] = bytes [ i ] ;
if ( i > 2 ) { //break if over hte limit
if ( i > maxSize ) { //break if over hte limit
break ;
}
}
for ( int i = bytes . length ; i < 2 ; i + + ) {
for ( int i = bytes . length ; i < maxSize ; i + + ) {
bites [ i ] = 0b0 ;
}
} else { //if big endian
for ( int i = 0 ; i < 2 - bytes . length ; i + + ) {
for ( int i = 0 ; i < maxSize - bytes . length ; i + + ) {
bites [ i ] = 0b0 ;
}
for ( int i = 8 - bytes . length ; i < 2 ; i + + ) {
for ( int i = maxSize - bytes . length ; i < maxSize ; i + + ) {
bites [ i ] = bytes [ i ] ;
if ( i > 2 ) { //break if over the limit
if ( i > maxSize ) { //break if over the limit
break ;
}
}
}
return ByteBuffer . wrap ( bites ) . order ( byteOrder ) . getShort ( ) ;
return bites;
}
//////////////////////////////////////////////////////////
//Number to Byte[] conversions
//////////////////////////////////////////////////////////
//////////////////////////////////////////////////
//Integer
//////////////////////////////////////////////////
public static byte [ ] intToBytes ( int i ) {
return intToBytes ( i , 4 , ByteOrder . LITTLE_ENDIAN ) ;
}
@ -134,16 +138,113 @@ public class ByteConverter {
public static byte [ ] intToBytes ( int i , int size ) {
return intToBytes ( i , size , ByteOrder . LITTLE_ENDIAN ) ;
}
/ * *
* Converts an Integer to a Byte Array
* @param i the integer to be converted
* @param size Size that the byte array should be
* @param byteOrder the order that the bytes should be ie Big Endian
* @return
* /
public static byte [ ] intToBytes ( int i , int size , ByteOrder byteOrder ) {
ByteBuffer buffer = ByteBuffer . allocate ( IntegerSize ) ;
buffer . order ( byteOrder ) ;
buffer . putInt ( i ) ;
byte [ ] copy = buffer . array ( ) ;
return convertNumtoBytes ( copy , size , byteOrder , IntegerSize ) ;
}
//////////////////////////////////////////////////
//Long
//////////////////////////////////////////////////
public static byte [ ] longToBytes ( long i ) {
return longToBytes ( i , LongSize , ByteOrder . LITTLE_ENDIAN ) ;
}
public static byte [ ] longToBytes ( long i , int size ) {
return longToBytes ( i , size , ByteOrder . LITTLE_ENDIAN ) ;
}
/ * *
* Converts an Long to a Byte Array
* @param i the Long to be converted
* @param size Size that the byte array should be
* @param byteOrder the order that the bytes should be ie Big Endian
* @return
* /
public static byte [ ] longToBytes ( long i , int size , ByteOrder byteOrder ) {
ByteBuffer buffer = ByteBuffer . allocate ( LongSize ) ;
buffer . order ( byteOrder ) ;
buffer . putLong ( i ) ;
byte [ ] copy = buffer . array ( ) ;
return convertNumtoBytes ( copy , size , byteOrder , LongSize ) ;
}
//////////////////////////////////////////////////
//Short
//////////////////////////////////////////////////
public static byte [ ] shortToBytes ( short i ) {
return shortToBytes ( i , ShortSize , ByteOrder . LITTLE_ENDIAN ) ;
}
public static byte [ ] shortToBytes ( short i , int size ) {
return shortToBytes ( i , size , ByteOrder . LITTLE_ENDIAN ) ;
}
/ * *
* Converts an Short to a Byte Array
* @param i the Short to be converted
* @param size Size that the byte array should be
* @param byteOrder the order that the bytes should be ie Big Endian
* @return
* /
public static byte [ ] shortToBytes ( short i , int size , ByteOrder byteOrder ) {
ByteBuffer buffer = ByteBuffer . allocate ( ShortSize ) ;
buffer . order ( byteOrder ) ;
buffer . putShort ( i ) ;
byte [ ] copy = buffer . array ( ) ;
return convertNumtoBytes ( copy , size , byteOrder , ShortSize ) ;
}
//////////////////////////////////////////////////
//Char
//////////////////////////////////////////////////
public static byte [ ] charToBytes ( char i ) {
return charToBytes ( i , CharSize , ByteOrder . LITTLE_ENDIAN ) ;
}
public static byte [ ] charToBytes ( char i , int size ) {
return charToBytes ( i , size , ByteOrder . LITTLE_ENDIAN ) ;
}
/ * *
* Converts an Char to a Byte Array
* @param i the Char to be converted
* @param size Size that the byte array should be
* @param byteOrder the order that the bytes should be ie Big Endian
* @return
* /
public static byte [ ] charToBytes ( char i , int size , ByteOrder byteOrder ) {
ByteBuffer buffer = ByteBuffer . allocate ( CharSize ) ;
buffer . order ( byteOrder ) ;
buffer . putChar ( i ) ;
byte [ ] copy = buffer . array ( ) ;
return convertNumtoBytes ( copy , size , byteOrder , CharSize ) ;
}
//////////////////////////////////////////////////
//Conversion Function
//////////////////////////////////////////////////
private static byte [ ] convertNumtoBytes ( byte [ ] copy , int size , ByteOrder byteOrder , int fullsize ) {
byte [ ] bytes = new byte [ size ] ;
if ( byteOrder = = ByteOrder . LITTLE_ENDIAN ) {
bytes = Arrays . copyOfRange ( copy , 0 , size ) ;
} else { // if it is Big Endian
bytes = Arrays . copyOfRange ( copy , IntegerSize - size , IntegerSize ) ;
bytes = Arrays . copyOfRange ( copy , fullsize - size , fulls ize) ;
}
return bytes ;
}