C'è un modo per conservare un bigint arbitrariamente grande in una sequenza di bit, solo in seguito per convertirlo in una struttura di Bigint standard?

cs.stackexchange https://cs.stackexchange.com/questions/128035

  •  29-09-2020
  •  | 
  •  

Domanda

Sto cercando di immaginare un modo di codificare un grosso in un flusso di bit, in modo che sia letteralmente una sequenza di bit.Quindi, dopo aver decodificato questo flusso di bit, si generare il tipo di struttura di dati standard Bigint (array di piccoli numeri interi con un segno).Come puoi codificare il Bigint come una sequenza di bit e come ci decodificheresti?Non vedo come eseguire correttamente le manipolazioni di bit o come codificare un numero arbitrario in bit superiori a 32 o 64. Se è richiesta una lingua, lo farei in JavaScript.

Ad esempio, questo prende byte e lo converte in un flusso a bit singolo:

function arrayOfBytesTo32Int(map) {
  return map[0] << 24
    | map[1] << 16
    | map[2] << 8
    | map[3]
}
.

Come faresti lo stesso tipo di cose per sequenze di bit arbitrariamente lunghe?

È stato utile?

Soluzione

Guarda Elias Delta o Gamma Codificando come esempio.

Altri suggerimenti

Ci sono molte codifiche comuni per interi di lunghezza arbitraria. Direi che le rappresentazioni più usate sono:

    .
  • Rappresentazioni di lunghezza-dati, in cui il numero di byte / parole è scritto per primo, seguito dai dati.
  • una rappresentazione di "proseguation bit". Se la dimensione della parola è b bit, quindi un numero intero è diviso in gruppi di B-1 bit, con il bit di ordine elevato che denota se c'è un altro byte che segue o meno.

Puoi mescolare e abbinarli. The Asn.1 Regole di codifica di base sono Un caso nel punto, dove nel caso generale, il campo Lunghezza è codificato in base 128 utilizzando il bit continutivo. Asn.1 Ber viene utilizzato in molti protocolli di rete, come VoIP, SNMP e LDAP, così come in Crittografia , dove rappresentare numeri interi di grandi dimensioni è una cosa comune.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a cs.stackexchange
scroll top