求助 65532 是如何转成 float -0.02 这个数的 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
rocbyte
V2EX    程序员

求助 65532 是如何转成 float -0.02 这个数的

  • /li>  
  •   rocbyte 2022-11-04 16:29:54 +08:00 1850 次点击
    这是一个创建于 1071 天前的主题,其中的信息可能已经有所发展或是发生改变。

    这个数 是我从一台 modbus 机组上读出来的一个值,他在 wincc 上的数据类型是 32 位浮点数 IEEE 754, 格式 FloatToSignedWord 。

    我怎么转也不成功,只有-1130113270 才能转成 -0.02 有没有大神只知道这个怎么弄

    7 条回复    2022-11-09 13:09:22 +08:00
    iX8NEGGn
        1
    iX8NEGGn  
       2022-11-04 16:34:47 +08:00 via iPhone
    float 有 -0.02 这个数?
    rocbyte
        2
    rocbyte  
    OP
       2022-11-04 16:50:10 +08:00
    @iX8NEGGn 没明白你的意识
    sujin190
        3
    sujin190  
       2022-11-04 17:18:53 +08:00
    你确定接收的是正确的或者没溢出,65532 就不符合 IEEE 754 格式的二进制编码
    CodeCore
        4
    CodeCore  
       2022-11-04 17:39:40 +08:00
    1. 要确认他用的是不是 IEEE754 ?
    2. 是不是用的半精度浮点数?
    3. 上面都不是,就要问一下,是不是定点数表示法。然后问他:符号位有没有,整数位多少 bit ,浮点数多少位?
    gujigujij
        5
    gujigujij  
       2022-11-04 18:00:30 +08:00
    原始报文是什么
    iX8NEGGn
        6
    iX8NEGGn  
       2022-11-04 18:03:36 +08:00   1
    @moremoney

    1. IEE 754 标准中,根本就无法精确表示 -0.02 这个数,所以 -0.02 是你舍入得到的,还是软件舍入得到的

    2. 问题中”这个数“,到底是指 65532 还是 -0.02 ,不明白你的意思

    3 ”FloatToSignedWord“,按字面意思是 float 的 32 位的二进制,转换成 16 位有符号数 ,16 位有符号数表示的范围在 -32768~32767 ,你又是如何的到 65532 这个值的

    所以根本没人能解决你的问题,大家全靠猜
    rocbyte
        7
    rocbyte  
    OP
       2022-11-09 13:09:22 +08:00
    @iX8NEGGn 这个问题解决了,是我表达的有问题 应该是 65534 这是一个带符号的 用 16 字节数据,当转成 int 时由 窄数据类型提升至宽数据类型时 应该进行符号位扩展,所以 65534 有符号数 变成 int 应该是 -2
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     6122 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 32ms UTC 02:22 PVG 10:22 LAX 19:22 JFK 22:22
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86