@Override public byte[] getSnmpBytes() { byte[] b = new byte[2 * _arrayLength]; int x = _array[0] * 40 + _array[1]; int off = 0; b[off++] = (byte) ((x > 127) ? (x - 256) : x); int y; boolean begin; for (int i = 2; i < _arrayLength; i++) { x = _array[i]; begin = false; for (int j = 3; j >= 0; j--) { y = (x >> (j * 7)) & 0x7f; if ((!begin) && (y == 0)) { continue; } begin = true; if (j != 0) { y |= 0x80; } b[off++] = (byte) ((y > 127) ? (y - 256) : y); } if (!begin) { b[off++] = (byte) 0; } } // System.out.println( SnmpObjectHeader._print(b,0,off)); SnmpObjectHeader head = new SnmpObjectHeader(SnmpObjectHeader.OBJECT_IDENTIFIER, off); int headLen = head.getCodedLength(); byte[] out = new byte[headLen + off]; System.arraycopy(head.getSnmpBytes(), 0, out, 0, headLen); System.arraycopy(b, 0, out, headLen, off); return out; }
protected byte[] getSnmpBytes(int type) { int s = _vector.size(); byte[][] v = new byte[s][]; int total = 0; for (int i = 0; i < s; i++) { v[i] = (_vector.elementAt(i)).getSnmpBytes(); total += v[i].length; } SnmpObjectHeader head = new SnmpObjectHeader(type, total); int headLen = head.getCodedLength(); byte[] out = new byte[headLen + total]; System.arraycopy(head.getSnmpBytes(), 0, out, 0, headLen); int pos = headLen; for (int i = 0; i < s; i++) { System.arraycopy(v[i], 0, out, pos, v[i].length); pos += v[i].length; } return out; }