2016-11-20 78 views
0

我正在对Hytera dmr中继器运行多个SNMP查询。但是,SNMP对象定义是这样的:将SNMP八位字符串转换为浮点(可读字符串)

rptVswr OBJECT-TYPE 
     SYNTAX OCTET STRING(SIZE(4)) 
     MAX-ACCESS read-only 
     STATUS mandatory 
     DESCRIPTION 
       "The VSWR. 
       It should be changed to float format. " 
     -- 1.3.6.1.4.1.40297.1.2.1.2.4 
     ::= { rptDataInfo 4 } 

运行查询后,我得到了这样的结果:

Name/OID: rptVswr.0; 
Value (OctetString): 0x76 D5 8B 3F 

有没有人有一个想法如何给字符串转换成可读格式? 它应该是这样的:1.15 or 2.15

非常感谢您的帮助,

BR - 尼尔斯

回答

0

这里是非常解码十六进制数据并将其转换为浮动简单的C++应用程序:

#include <iostream> 
#include <algorithm> 

using namespace std; 

int main() 
{ 
    unsigned char ptr[] = {0x76, 0xD5, 0x8B, 0x3F}; 
    reverse(ptr, ptr + 4); 
    float f = *reinterpret_cast<float*>(ptr); 

    cout << f << endl; 

    return 0; 
} 

结果是2.16559e+33