/** * */ package video.lib; /** * @author yuezhu * */ public class NumberConvertor { /** * @param args */ public static void main(String[] args) { System.err.println("long.size=" + Long.SIZE); short value = -54; byte[] bytes = toByteArray(value); System.err.println(toShortValue(bytes)); } public static byte[] toByteArray(Number data) { int length; long value; if (data instanceof Byte) { // System.err.println("Byte"); length = Byte.SIZE / Byte.SIZE; value = (Byte) data; } else if (data instanceof Short) { // System.err.println("Short"); length = Short.SIZE / Byte.SIZE; value = (Short) data; } else if (data instanceof Integer) { // System.err.println("Integer"); length = Integer.SIZE / Byte.SIZE; value = (Integer) data; } else if (data instanceof Long) { // System.err.println("Long"); length = Long.SIZE / Byte.SIZE; value = (Long) data; } else { return null; } byte[] byteArray = new byte[length]; for (int i = 0; i < length; i++) { byteArray[i] = (byte) ((value >> (8 * (length - i - 1))) & 0xff); } return byteArray; } public static short toShortValue(byte[] data) { if (data == null || data.length != 2) return 0x0; short value = (short)( (short)(0xff & data[0]) << 8 | (short)(0xff & data[1]) << 0); return value; } public static int toIntValue(byte[] data) { if (data == null || data.length != 4) return 0x0; return (int)( (int)(0xff & data[0]) << 24 | (int)(0xff & data[1]) << 16 | (int)(0xff & data[2]) << 8 | (int)(0xff & data[3]) << 0); } public static long toLongValue(byte[] data) { if (data == null || data.length != 8) return 0x0; long value = (long)( (long)(0xff & data[0]) << 56 | (long)(0xff & data[1]) << 48 | (long)(0xff & data[2]) << 40 | (long)(0xff & data[3]) << 32 | (long)(0xff & data[4]) << 24 | (long)(0xff & data[5]) << 16 | (long)(0xff & data[6]) << 8 | (long)(0xff & data[7]) << 0 ); return value; } }