Hex数组浮动

时间:2018-01-16 10:20:00

标签: c arrays hex

我有一个

数组
 memcpy(val,array_a,4);
 val[4] = '\0';

我想要做的是组合所有元素并将其存储到val以使其为0x0000084D并将其转换为浮动,即2125。

我试过memcpy

{{1}}

但仍无效。

1 个答案:

答案 0 :(得分:5)

首先,0x0000084D整数值 2125的大端表示,而不是IEEE float。

其次,不需要复制到另一个char数组(并且在尝试" nul-terminate"数组时)访问第5个元素超出范围。那部分毫无意义。

要将此数组转换为主机上的整数,请先将其复制为标准的32位整数,然后根据计算机的字节顺序进行转换(否则您将在小端机器上获得错误值)

  unsigned char array_a[4] = {0x00,0x00,0x08,0x4D};
  uint32_t the_int;
  memcpy(&the_int,array_a,sizeof(uint32_t));
  the_int = ntohl(the_int);

  printf("%d\n",the_int);

或没有任何外部转换库使用位移使其与字节无关:

  uint32_t the_int = 0;
  int i;
  for (i=0;i<sizeof(uint32_t);i++)
  {
     the_int <<= 8;
     the_int += array_a[i];
  }

你得到2125好了,现在你可以把它分配到一个浮动,如果你喜欢

float test = the_int;