CLDC1.0中不支撐float,自己處理了一下:
public static int Bytes4ToInt(byte abyte0[])
{
return (0xff & abyte0[0]) << 24 | (0xff & abyte0[1]) << 16 |
(0xff & abyte0[2]) << 8 | 0xff & abyte0[3];
}
public static int[][] intBitsToFloatII(int bits,int flag)
{
long time = System.currentTimeMillis();
// 符號位一位
int sign = bits >>> 31;
System.out.println("符號:" + sign);
// 指數八位 偏移:7FH
byte index = (byte)((byte)((bits >>> 23) & 0xFF) - 0x7F);
// 尾數23尾 加一位固定位
int tail = (bits & 0x007FFFFF) | 0x00800000;
tail <<= index;
int[][] result = new int[1][1];
result[0][0] = tail >>> 23;
System.out.println("整數部分:" + result[0][0]);
// 小數23位
int decimal = tail & 0x007FFFFF;
long tmp = decimal * 1000;
tmp = tmp >>> 23;
System.out.println("小數部分[放大1000]:" + tmp);
result[0][0] = (int)tmp;
System.out.println("小數部分:" + tmp);
System.out.println("系統函數盤算成果:" + Float.intBitsToFloat(bits));
System.out.println("耗時:" + (System.currentTimeMillis() - time) + "ms");
return result;
}
/**
* 整型位字節轉float
*
* @param bits
* int 整型字節數據
* @param flag
* int 精度:0:2位小數;1:3位小數
* @return int[][] [整數][小數]
*/
public static int[][] intBitsToFloat(int bits,int flag)
{
long time = System.currentTimeMillis();
// 符號位一位
int sign = bits >>> 31;
System.out.println("符號:" + sign);
// 指數八位 偏移:7FH
byte index = (byte)((byte)((bits >>> 23) & 0xFF) - 0x7F);
// 尾數23尾 加一位固定位
int tail = (bits & 0x007FFFFF) | 0x00800000;
tail <<= index;
int[][] result = new int[1][1];
result[0][0] = tail >>> 23;
System.out.println("整數部分:" + result[0][0]);
// 小數23位
int decimal = tail & 0x007FFFFF;
decimal = (decimal * 100) >>> 23;
int decRes = decimal;
int tmp;
// if (flag == 0)//精度:兩位小數
// {
// decRes /= 100;
// tmp = decRes % 100;
// if (tmp >= 50)
// {
// decRes++;
// }
// }
// else
// {
// decRes /= 10;
// tmp = decRes % 10;
// if (tmp >= 500)
// {
// decRes++;
// }
// }
result[0][0] = decRes;
System.out.println("小數部分:" + decRes);
System.out.println("系統函數盤算成果:" + Float.intBitsToFloat(bits));
System.out.println("耗時:" + (System.currentTimeMillis() - time) + "ms");
return result;
}
////////////////////////////////
調用:
byte[] tt = new byte[4];
tt[0] = bb[17];
tt[1] = bb[16];
tt[2] = bb[15];
tt[3] = bb[14];
for (int i = 0; i < tt.length; i++)
{
// System.out.println(this.b2h(tt[i]));
}
int ff = Bytes4ToInt(tt);
this.intBitsToFloat(ff,0);
//留心網絡字節次序