public class ByteUtil { public static byte[] getBytes(short data) { byte[] bytes = new byte[2]; bytes[0] = (byte) (data & 0xff); bytes[1] = (byte) ((data & 0xff00) >> 8); return bytes; } public static byte[] getBytes(char data) { byte[] bytes = new byte[2]; bytes[0] = (byte) (data); bytes[1] = (byte) (data >> 8); return bytes; } public static byte[] getBytes(int data) { byte[] bytes = new byte[4]; bytes[0] = (byte) (data & 0xff); bytes[1] = (byte) ((data & 0xff00) >> 8); bytes[2] = (byte) ((data & 0xff0000) >> 16); bytes[3] = (byte) ((data & 0xff000000) >> 24); return bytes; } public static byte[] getBytes(long data) { byte[] bytes = new byte[8]; bytes[0] = (byte) (data & 0xff); bytes[1] = (byte) ((data >> 8) & 0xff); bytes[2] = (byte) ((data >> 16) & 0xff); bytes[3] = (byte) ((data >> 24) & 0xff); bytes[4] = (byte) ((data >> 32) & 0xff); bytes[5] = (byte) ((data >> 40) & 0xff); bytes[6] = (byte) ((data >> 48) & 0xff); bytes[7] = (byte) ((data >> 56) & 0xff); return bytes; } public static byte[] getBytes(float data) { int intBits = Float.floatToIntBits(data); return getBytes(intBits); } public static byte[] getBytes(double data) { long intBits = Double.doubleToLongBits(data); return getBytes(intBits); } public static short getShort(byte[] bytes) { return (short) ((0xff & bytes[0]) | (0xff00 & (bytes[1] << 8))); } public static char getChar(byte[] bytes) { return (char) ((0xff & bytes[0]) | (0xff00 & (bytes[1] << 8))); } public static int getInt(byte[] bytes) { return (0xff & bytes[0]) | (0xff00 & (bytes[1] << 8)) | (0xff0000 & (bytes[2] << 16)) | (0xff000000 & (bytes[3] << 24)); } public static long getLong(byte[] bytes) { return (0xffL & (long) bytes[0]) | (0xff00L & ((long) bytes[1] << 8)) | (0xff0000L & ((long) bytes[2] << 16)) | (0xff000000L & ((long) bytes[3] << 24)) | (0xff00000000L & ((long) bytes[4] << 32)) | (0xff0000000000L & ((long) bytes[5] << 40)) | (0xff000000000000L & ((long) bytes[6] << 48)) | (0xff00000000000000L & ((long) bytes[7] << 56)); } public static float getFloat(byte[] bytes) { return Float.intBitsToFloat(getInt(bytes)); } public static double getDouble(byte[] bytes) { long l = getLong(bytes); return Double.longBitsToDouble(l); } public static byte[] intToByteArray(int i) { byte[] bytes = new byte[4]; bytes[0] = (byte) i; bytes[1] = (byte) (i >> 8); bytes[2] = (byte) (i >> 16); bytes[3] = (byte) (i >> 24); return bytes; } public static int byteArrayToInt(byte[] bytes) { int res = 0; for (int i = 0; i < bytes.length; i++) { res += (bytes[i] & 0xff) << i * 8; } return res; } public static void main(String[] args) { short s=257; char c='z'; int i=-1234567; long l=7890000L; float f=-1.0f; double d=12345.67890d; byte[] bytes = getBytes(s); System.out.println(getShort(bytes)); byte[] bytes1 = getBytes(c); System.out.println(getChar(bytes1)); byte[] bytes2 = getBytes(i); System.out.println(getInt(bytes2)); byte[] bytes3 = getBytes(l); System.out.println(getLong(bytes3)); byte[] bytes4 = getBytes(f); System.out.println(getFloat(bytes4)); byte[] bytes5 = getBytes(d); System.out.println(getDouble(bytes5)); } }
标签:转换,bytes,static,0xff,java,byte,data,public From: https://www.cnblogs.com/wangbin2188/p/17355630.html