技术论坛

字节与浮点数转换

作者 主题
侠士

经验值: 1751
发帖数: 379
精华帖: 0
主题:【求助】字节与浮点数转换


只看楼主 楼主 2020-09-25 13:20:29

请问在wincc中如何将4个字节转换成一个浮点数。


路漫漫其修远
以下网友喜欢您的帖子:

  
重要声明:

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

帖子链接:https://www.ad.siemens.com.cn/club/bbs/post.aspx?a_id=1644053&b_id=5&s_id=0&num=5

侠士

经验值: 1751
发帖数: 379
精华帖: 0
回复:字节与浮点数转换


只看楼主 楼主 1楼 2020-09-25 14:08:32

这是写的脚本,但是转出来不对

int i,j,z,n;

BYTE tempByte[12],actByte[12];

float  tempFloat[3],*tempF;

//读取原始数据

GetTagRawWait("456",actByte,12);

//颠倒数据中字节位置

j = 0;

for(i = 0; i < 12;i++)

{

     if(i != 0 && i % 4 == 0)

     {

          j = j + 1;

     }

      z = i * (-1) + 3 + 8 *(j);

     tempByte[i] = actByte[z];

     printf("%d ",tempByte[i]);

}

for(n = 0;n<3;n++)

{

      tempF =(float *)actByte;

       tempFloat[0]= (float)(tempF);

       printf("%f ",tempFloat[0]);

}



路漫漫其修远
以下网友喜欢您的帖子:

  
至圣

经验值: 19840
发帖数: 8834
精华帖: 39
回复:字节与浮点数转换


只看楼主 2楼 2020-09-25 14:16:15

首先你得说清楚你这4个字节是一个什么样的数据?

一般来说,如果是作为一个变量读到的数据,直接wincc设置类型转换就可以了。


 
以下网友喜欢您的帖子:

  
至圣

经验值: 28599
发帖数: 10824
精华帖: 131
回复:字节与浮点数转换


只看楼主 3楼 2020-09-25 17:14:28

    if(i != 0 && i % 4 == 0)

     {

          j = j + 1;

     }

      z = i * (-1) + 3 + 8 *(j);

     tempByte[i] = actByte[z];

这一段代码看不懂。 

俺们通常是4行,处理一个浮点数的4个byte。


然后根据来的数据不同, 顺序也不同, 有3421的,也有4321的,也有2143的。 

这些需要你提前搞清楚。 



微信公众号:PLC标准化编程,ZHO6371995
以下网友喜欢您的帖子:

  
至圣

经验值: 28599
发帖数: 10824
精华帖: 131
回复:字节与浮点数转换


只看楼主 4楼 2020-10-14 12:09:52

没必要看懂


微信公众号:PLC标准化编程,ZHO6371995
以下网友喜欢您的帖子:

  
侠圣

经验值: 4872
发帖数: 741
精华帖: 10
回复:字节与浮点数转换


只看楼主 5楼 2021-09-25 19:07:56

把4字节数据转换位浮点数,必须知道这个4字节数据究竟是什么类型的数据吧,如果是通讯浮点原始数据需要转换位本地浮点数据,那就只需要弄明白大小端问题了。


 
以下网友喜欢您的帖子:

  
  • 上一页
  • 1
  • 下一页
收起
字节与浮点数转换
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。