byte[] buf = bb.array();
int arrayOffset = bb.arrayOffset();
- int origLimit = bb.limit();
- int limit = (origLimit - arrayOffset > 128) ? arrayOffset + 128 : origLimit;
+ int offset = arrayOffset + bb.position();
+ int origLimit = arrayOffset + bb.limit();
+ int limit = (origLimit - offset > 128) ? offset + 128 : origLimit;
- for (int i = arrayOffset; i < limit; i++) {
- if (i > arrayOffset) {
+ for (int i = offset; i < limit; i++) {
+ if (i > offset) {
sb.append(" ");
}
sb.append(paddedByteString(buf[i]));
assertNull(TBaseHelper.rightSize(null));
}
+ public void testByteBufferToString() {
+ byte[] array = new byte[]{1, 2, 3};
+ ByteBuffer bb = ByteBuffer.wrap(array, 1, 2);
+ StringBuilder sb = new StringBuilder();
+ TBaseHelper.toString(bb, sb);
+ assertEquals("02 03", sb.toString());
+ bb = ByteBuffer.wrap(array, 0, array.length);
+ bb.position(1);
+ bb = bb.slice();
+ assertEquals(1, bb.arrayOffset());
+ assertEquals(0, bb.position());
+ assertEquals(2, bb.limit());
+ sb = new StringBuilder();
+ TBaseHelper.toString(bb, sb);
+ assertEquals("02 03", sb.toString());
+ }
+
public void testCopyBinaryWithByteBuffer() throws Exception {
byte[] bytes = new byte[]{0, 1, 2, 3, 4, 5};
ByteBuffer b = ByteBuffer.wrap(bytes);