0

SNMP エージェントに 8 バイトの文字列を送信する必要があります。

私の番号は、文字列として大きな整数にすることができます。Java の符号付きバイトの制限により、一部の数値に問題があります。

たとえば、num が「555」の場合、SNMP エージェントは正しい値を受け取ります。num が「666」の場合、配列内のバイトの 1 つに -ve 値があるため、SNMP エージェントは間違った値を受け取ります。

私は少しやった & 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);
}
4

1 に答える 1