com.sparshui.common.utils.Converter Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of jmol Show documentation
Show all versions of jmol Show documentation
Jmol: an open-source Java viewer for chemical structures in 3D
package com.sparshui.common.utils;
/**
* Contains conversion methods that are needed by several elements of the
* Gesture Server.
*
*
* adapted by Bob Hanson for Jmol 11/29/2009 (added several useful methods)
*
* @author Jay Roltgen
*
*/
public class Converter {
/**
* Converts an integer intBits into a byte array.
* @param intBits The integer in network byte order.
* @return A byte array in network byte order.
*/
public static byte[] intToByteArray(int intBits) {
byte[] ret = new byte[4];
ret[0] = (byte) ((intBits & 0xff000000) >> 24);
ret[1] = (byte) ((intBits & 0x00ff0000) >> 16);
ret[2] = (byte) ((intBits & 0x0000ff00) >> 8);
ret[3] = (byte) ((intBits & 0x000000ff) >> 0);
return ret;
}
public static void intToByteArray(byte[] data, int i, int idata) {
data[i++] = (byte) ((idata & 0xff000000) >> 24);
data[i++] = (byte) ((idata & 0x00ff0000) >> 16);
data[i++] = (byte) ((idata & 0x0000ff00) >> 8);
data[i] = (byte) ((idata & 0x000000ff) >> 0);
}
/**
* Converts a byte array to an integer.
* @param b
* A byte array representing an integer in network
* byte order.
* @return
* An integer that was created from the byte array.
*/
public static int byteArrayToInt(byte[] b) {
return ((b[0] << 24) & 0xFF000000)
| ((b[1] << 16) & 0x00FF0000)
| ((b[2] << 8) & 0x0000FF00)
| (b[3] & 0x000000FF);
}
public static int byteArrayToInt(byte[] b, int i) {
return ((b[i++] << 24) & 0xFF000000)
| ((b[i++] << 16) & 0x00FF0000)
| ((b[i++] << 8) & 0x0000FF00)
| (b[i] & 0x000000FF);
}
public static void floatToByteArray(byte[] data, int i, float fdata) {
intToByteArray(data, i, Float.floatToIntBits(fdata));
}
public static float byteArrayToFloat(byte[] data, int i) {
return Float.intBitsToFloat(byteArrayToInt(data, i));
}
public static void longToByteArray(byte[] data, int i, long ldata) {
intToByteArray(data, i, ((int) (ldata >> 32)));
intToByteArray(data, i + 4, ((int) (ldata & 0xFFFFFFFF)));
}
public static long byteArrayToLong(byte[] data, int i) {
return (((long) byteArrayToInt(data, i)) << 32)
| byteArrayToInt(data, i + 4) & 0xFFFFFFFFL;
}
public static String byteArrayToString(byte[] bytes) {
char[] chars = new char[bytes.length];
for (int i = 0; i < chars.length; i++)
chars[i] = (char) bytes[i];
return new String(chars);
}
public static byte[] stringToByteArray(String s) {
// no unicode here -- just for simple class names
char[] chars = s.toCharArray();
byte[] bytes = new byte[s.length()];
for (int i = 0; i < chars.length; i++)
bytes[i] = (byte) chars[i];
return bytes;
}
}