我使用这个c代码使用TCP / IP从微控制器转换和传输浮点数据。在这里,我将浮动中断为四个char值,这很有效。但我需要它的等效java代码再次在服务器端获取浮点值。
我是java的新手。所以请帮忙。
/********************************************************************************/
unsigned char outbox[5];
void breakDown(void)
{
int index=0;
float member=-600.231;
unsigned long d = *(unsigned long *)&member;
outbox[0] = d & 0x00FF;
outbox[1] = (d & 0xFF00) >> 8;
outbox[2] = (d & 0xFF0000) >> 16;
outbox[3] = (d & 0xFF000000) >> 24;
}
void buildUp(void)
{
unsigned long d;
unsigned index;
d = ((long)outbox[3] << 24);
d|= ((long)outbox[2] << 16);
d|= ((long)outbox[1] << 8);
d|= ((long)outbox[0]);
float member = *(float *)&d;
printf("Float output=%f\n\n",member);
}
java.io.DataInputStream.readFloat()调用java.lang.Float.intBitsToFloat(int bits),你可以尝试一下。 (首先阅读api doc)
为什么要尝试将变量拆分为不同的段?只需将其作为字符串发送,然后使用JAVA函数将其转换为float变量。
String numberAsString = "153.25";
float number = Float.parseFloat(numberAsString);