... and in addition, the "index number" is a bit-stuffed pointer. I.e. a pointer that just uses the number if bits (not bytes) it takes to represent all distinct values of the field. For example, if a field has exactly 4 distinct values, QlikView uses a pointer with just 2 bits to represent all values of that field. The result is that all data tables (using these pointers) are minimal in size.
When the clear text is needed, this is fetched from the symbol table: the table with the distinct values, that is a mapping between the bit-stuffed pointers and the real value.