【问题标题】:Omron Sysmac - convert hex to signed floating point decimalOmron Sysmac - 将十六进制转换为有符号浮点十进制
【发布时间】:2021-07-30 00:56:00
【问题描述】:

我正在开发一个 Omron 系统,我正在尝试生成所有保留设置点的打印输出。手动执行此操作需要几天时间,因此我在 Sysmac 中创建了一个变量备份。该文件以 XML 格式导出,非常棒,但导出会将我所有的真实标签转换为十六进制。其中一些标签是有符号的浮点小数,我不确定如何将它们转换回可读值。我正在使用 python 来处理文件。以下是我需要转换的项目的一些示例:

  <Item Name="VAR://****_**.IO.OFST" DataType="REAL">
    <Data>7F138ABD</Data>
  </Item>
  <Item Name="VAR://****_**.ALPHA" DataType="REAL">
    <Data>6F1203BC</Data>
  </Item>

这两个数字都是负浮点小数。我已经在这里待了几个小时,并且认为寻求帮助不会有什么坏处。我将不胜感激有关该主题的任何方向!

【问题讨论】:

    标签: python type-conversion


    【解决方案1】:

    我找到了一个 python 解决方案。如果有其他人在看,就在这里

    How to convert HEX string to Float (Little Endian)

    import struct
    
    hex_val = '7F138ABD'
    
    binary_data = bytes.fromhex(hex_val)
    
    FLOAT = 'f'
    fmt = '<' + FLOAT * (len(binary_data) // struct.calcsize(FLOAT))
    numbers = struct.unpack(fmt, binary_data)
    print(numbers[0])
    

    【讨论】:

      猜你喜欢
      • 2014-03-01
      • 2016-06-02
      • 1970-01-01
      • 2011-03-05
      • 2010-12-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多