在char中打破float值并在tcp上传输并使用java程序读取[关闭]

问题描述 投票:-5回答:2

我使用这个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 c
2个回答
0
投票

java.io.DataInputStream.readFloat()调用java.lang.Float.intBitsToFloat(int bits),你可以尝试一下。 (首先阅读api doc)


0
投票

为什么要尝试将变量拆分为不同的段?只需将其作为字符串发送,然后使用JAVA函数将其转换为float变量。

String numberAsString = "153.25";
float number = Float.parseFloat(numberAsString);
© www.soinside.com 2019 - 2024. All rights reserved.