繁体   English   中英

我需要将8字节的字符串发送到SNMP代理,但是接收到错误的值

[英]I need to send an 8-byte string to an SNMP agent, but it's receiving the wrong values

我需要将8字节的字符串发送到SNMP代理。

我的数字可以是字符串的大整数。 由于带符号字节的Java限制,我遇到了一些数字问题。

例如,如果num为“ 555”,则SNMP代理会接收正确的值。 如果num为“ 666”,则SNMP代理收到错误的值,因为数组中的字节之一具有-ve值。

我做了一些与0xFF,仍然无法正常工作。 我怎样才能解决这个问题? 谢谢你的帮助!

 public static String stringNumToOctetString(String num) {
    BigInteger bi = new BigInteger(num);
    byte[] b = bi.toByteArray();

    int n = 8 - b.length;
    byte[] bVal = new byte[8]; //return must be 8 bytes
    for(int i=0; i<8; i++) {
        bVal[i] = (byte) 0;
    }
    int k = 0;
    for(int j=n; j<8; j++) {
        bVal[j] = (byte) (b[k++] & 0xFF);
    }
    return new String(bVal);
}

使用int数组存储八位字节值,而不是byte数组。 byte是带符号的,范围为-128到+127,因此在这里需要将值设置为255的地方不起作用。

进一步阅读
http://www.jguru.com/faq/view.jsp?EID=13647

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM