Sto cercando un modo ragionevolmente (*) efficiente in termini di spazio per codificare decimali di precisione arbitraria (ad esempio BigDecimal ), in modo tale che quando si ordina il modello di bit delle codifiche lessicograficamente, i numeri verranno ordinati numericamente. Questo è legato a questa domanda StackOverflow .
Un approccio semplice / ingenuo a questo sarebbe convertire il numero in una rappresentazione simile a IEEE con un esponente di 8 byte (che è ciò che RR nel NTL fa?), Ma ovviamente questa è una rappresentazione abbastanza inefficiente (*).
C'è forse qualche altro approccio a questo? Esistono ottimizzazioni possibili per gli interi in precisione arbitraria? La codifica non ha bisogno di supportare altre operazioni che l'ordinamento (e, se possibile, la decodifica di nuovo del numero).
(*) In termini ragionevoli, non intendo dire mettere insieme bit in byte come fa IEEE-754. Semplicemente non voglio avere campi inutilmente grandi che rimarranno per lo più vuoti in un gran numero di situazioni (come sarebbe il caso con un esponente di 8 byte). Il motivo per questo è che il numero (codificato) verrà successivamente elaborato da questo schema , che richiede alcuni millisecondi per byte da eseguire.
L'efficienza di runtime della codifica / decodifica d'altra parte non è un grosso problema (qualsiasi cosa in meno di 10 ms per 128 byte di dati sarà ancora oscurata dal runtime dello schema OPE apprezzato in precedenza).
(Nota anche, questa dovrebbe essere una rappresentazione decimale, quindi ci sono problemi di precisione dovuti a "cose binarie".)