學習筆記,轉自http://tjmljw.iteye.com/blog/1767716
1 public class float2bytes 2 { 3 4 /** 5 * 浮點轉換為字節 6 * 7 * @param f 8 * @return 9 */ 10 public static byte[] float2byte(float f) { 11 12 // 把float轉換為byte[] 13 int fbit = Float.floatToIntBits(f); 14 15 byte[] b = new byte[4]; 16 for (int i = 0; i < 4; i++) { 17 b[i] = (byte) (fbit >> (24 - i * 8)); 18 } 19 20 // 翻轉數組 21 int len = b.length; 22 // 建立一個與源數組元素類型相同的數組 23 byte[] dest = new byte[len]; 24 // 為了防止修改源數組,將源數組拷貝一份副本 25 System.arraycopy(b, 0, dest, 0, len); 26 byte temp; 27 // 將順位第i個與倒數第i個交換 28 for (int i = 0; i < len / 2; ++i) { 29 temp = dest[i]; 30 dest[i] = dest[len - i - 1]; 31 dest[len - i - 1] = temp; 32 } 33 34 return dest; 35 36 } 37 38 /** 39 * 字節轉換為浮點 40 * 41 * @param b 字節(至少4個字節) 42 * @param index 開始位置 43 * @return 44 */ 45 public static float byte2float(byte[] b, int index) { 46 int l; 47 l = b[index + 0]; 48 l &= 0xff; 49 l |= ((long) b[index + 1] << 8); 50 l &= 0xffff; 51 l |= ((long) b[index + 2] << 16); 52 l &= 0xffffff; 53 l |= ((long) b[index + 3] << 24); 54 return Float.intBitsToFloat(l); 55 } 56 57 58 public static void main(String[] args) 59 { 60 //float2bytes f2b = new float2bytes(); 61 byte[] b = new byte[4]; 62 float f = 11.21f; 63 b=float2byte(f); 64 for(int i=0;i<b.length;i++) 65 { 66 System.out.println(b[i]); 67 } 68 69 System.out.println(byte2float(b,0)); 70 } 71 72 }