public String getKeyValueDescription(final boolean inverseDirection, final byte[] ab) {
        final StringBuilder sb = new StringBuilder(200);
        decode(lookupData, inverseDirection, ab);
        for (int inum = 0; inum < lookupValues.size(); inum++) { // loop over lookup names
            final BExpressionLookupValue[] va = lookupValues.get(inum);
            final int val = lookupData[inum];
            final String value = (val >= 1000) ? Float.toString((val - 1000) / 100f) : va[val].toString();
            if (!value.isEmpty()) {
                if (sb.length() > 0) {
                    sb.append(' ');
                }
                sb.append(lookupNames.get(inum)).append("=").append(value);
            }
        }
        return sb.toString();
    }
decode a byte-array into a lookup data array
main/src/main/java/cgeo/geocaching/brouter/expressions/BExpressionContext.java