簡體   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