James Taylor created HBASE-6919: ----------------------------------- Summary: Remove unnecessary cast from Bytes.readVLong Key: HBASE-6919 URL: https://issues.apache.org/jira/browse/HBASE-6919 Project: HBase Issue Type: Bug Reporter: James Taylor Priority: Minor
Remove the throws IOException so that caller doesn't have to catch and ignore. public static long readVLong(final byte [] buffer, final int offset) throws IOException Also, add public static int readVInt(final byte [] buffer, final int offset) throws IOException { return (int)readVLong(buffer,offset); } and these are useful too: /** * Put long as variable length encoded number at the offset in * the result byte array. * @param vint Integer to make a vint of. * @param result buffer to put vint into * @return Vint length in bytes of vint */ public static int vintToBytes(byte[] result, int offset, final long vint) { long i = vint; if (i >= -112 && i <= 127) { result[offset] = (byte) i; return 1; } int len = -112; if (i < 0) { i ^= -1L; // take one's complement' len = -120; } long tmp = i; while (tmp != 0) { tmp = tmp >> 8; len--; } result[offset++] = (byte) len; len = (len < -120) ? -(len + 120) : -(len + 112); for (int idx = len; idx != 0; idx--) { int shiftbits = (idx - 1) * 8; long mask = 0xFFL << shiftbits; result[offset++] = (byte)((i & mask) >> shiftbits); } return len + 1; } /** * Decode a vint from the buffer pointed at to by ptr and * increment the offset of the ptr by the length of the * vint. * @param ptr a pointer to a byte array buffer * @return the decoded vint value as an int */ public static int vintFromBytes(ImmutableBytesWritable ptr) { return (int) vlongFromBytes(ptr); } /** * Decode a vint from the buffer pointed at to by ptr and * increment the offset of the ptr by the length of the * vint. * @param ptr a pointer to a byte array buffer * @return the decoded vint value as a long */ public static long vlongFromBytes(ImmutableBytesWritable ptr) { final byte [] buffer = ptr.get(); final int offset = ptr.getOffset(); byte firstByte = buffer[offset]; int len = WritableUtils.decodeVIntSize(firstByte); if (len == 1) { ptr.set(buffer, offset+1, ptr.getLength()); return firstByte; } long i = 0; for (int idx = 0; idx < len-1; idx++) { byte b = buffer[offset + 1 + idx]; i = i << 8; i = i | (b & 0xFF); } ptr.set(buffer, offset+len, ptr.getLength()); return (WritableUtils.isNegativeVInt(firstByte) ? ~i : i); } -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira