PHP SNMP returns PLAIN 和 OBJECT 模式下的奇怪十六进制值

PHP SNMP returns strange hex values in PLAIN and OBJECT mode

我正在研究 php snmp 脚本,我注意到了一些奇怪的事情。当我将 snmp_set_valueretrieval 设置为 SNMP_VALUE_PLAINSNMP_VALUE_OBJECT 时,输出是一些奇怪的字符(有时是汉字)。但是,当我将它设置为 SNMP_VALUE_LIBRARY 时,一切看起来都很好。有没有办法将这些输出转换为可读字符串?这是我的代码

snmp_set_quick_print(1);
snmp_set_valueretrieval(SNMP_VALUE_PLAIN);

$example = snmpget(BS_IP, 'public', OID);
echo "Example SNMP_VALUE_PLAIN: " . $example . PHP_EOL;

snmp_set_valueretrieval(SNMP_VALUE_LIBRARY);

$example = snmpget(BS_IP, 'public', OID);
echo "Example SNMP_VALUE_LIBRARY: " . $example . PHP_EOL;

snmp_set_valueretrieval(SNMP_VALUE_OBJECT);

$example = snmpget(BS_IP, 'public', OID);
echo "Example SNMP_VALUE_OBJECT: " . $example->value . PHP_EOL;

这是输出的屏幕截图:

经过几个小时的测试,我注意到结果是二进制的。因此,在我用 bin2hex 函数包装结果后,结果终于可读了。

$example = snmpget(BS_IP, 'public', OID);
echo "Example SNMP_VALUE_PLAIN: " . bin2hex($example) . PHP_EOL;