请教:如何将octet string类型转换成string类型显示

时间:2021-12-17 19:32:50
我用idsnmp从设备上取信息,但oid对应的值类型是octet string,snmp.Reply.Value[0]的值却是string类型,这两者应如何处理才能把取回来的信息正确显示出来?

3 个解决方案

#1


octet string详细的定义是怎样的?

#2


octet string是字节串,即用十六进制串表示字节序列。如真正的字节序列是 1 2 3 4,用字节串则表示为31 32 33 34,具体的转换方法为:
1、先看字节串有多长,因为一个字节要用到三个字符(两位数符加一个空格,如果有空格的话),然后将之除以3,得到字节的数目,然后由此申请空间,用GetMem或动态数组+SetLength均可;
2、取出每两个字符,用HexToBin转换为一个字节放到结果中;
3、跳过空格;
4、重复2、3直至串结束。

注意,看看你的实际的octet string中有没有空格,如果没有,则上面做相应调整。

#3


问题是snmp.Reply.Value[0]的取值类型是string,它取的对象却是octet string,取值类型不一致,这个如何处理啊

#1


octet string详细的定义是怎样的?

#2


octet string是字节串,即用十六进制串表示字节序列。如真正的字节序列是 1 2 3 4,用字节串则表示为31 32 33 34,具体的转换方法为:
1、先看字节串有多长,因为一个字节要用到三个字符(两位数符加一个空格,如果有空格的话),然后将之除以3,得到字节的数目,然后由此申请空间,用GetMem或动态数组+SetLength均可;
2、取出每两个字符,用HexToBin转换为一个字节放到结果中;
3、跳过空格;
4、重复2、3直至串结束。

注意,看看你的实际的octet string中有没有空格,如果没有,则上面做相应调整。

#3


问题是snmp.Reply.Value[0]的取值类型是string,它取的对象却是octet string,取值类型不一致,这个如何处理啊