hex2BitSet static method

IsoBitSet hex2BitSet(
  1. IsoBuffer buffer,
  2. int maxBits
)

Reads an ASCII-hex bitmap at the buffer's current position without consuming it.

Implementation

static IsoBitSet hex2BitSet(IsoBuffer buffer, int maxBits) {
  final int offset = buffer.position;
  int length = maxBits > 64 ? ((digit(buffer.getAt(offset), 16) & 0x08) == 8 ? 128 : 64) : maxBits;
  if (length > 64 && maxBits > 128 && buffer.limit > 16 && (digit(buffer.getAt(offset + 16), 16) & 0x08) == 8) length = 192;
  final IsoBitSet bitSet = IsoBitSet();
  for (int i = 0; i < length; i++) {
    final int nibble = digit(buffer.getAt(offset + (i >> 2)), 16);
    if (nibble & (0x08 >> i % 4) > 0) {
      bitSet.set(i + 1);
      if (i == 65 && maxBits > 128) length = 192;
    }
  }
  return bitSet;
}