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);
}