private static void encodeBitField (ByteBuffer buffer, BitFieldMessage msg) {
        BitSet bitfield = msg.getBitField();
        int nbytes = (bitfield.size() + 7) / 8;
        byte[] bytes = new byte[nbytes];
        for (int i = 0; i < nbytes * 8; i++) {
            if (bitfield.get(i)) {
                int bInd = i % 8;
                int bMask = 1 << (7 - (i / 8));
                bytes[bInd] |= bMask;
            }
        }

        buffer.putInt(nbytes + 1);
        buffer.put((byte) msg.getMessageType().getId());
        buffer.put(bytes);
    }