¿Hay alguna forma de almacenar un bigido arbitrariamente grande en una secuencia de bits, solo más tarde para convertirla en una estructura de BIRTINT estándar?

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

  •  29-09-2020
  •  | 
  •  

Pregunta

Estoy tratando de imaginar una forma de codificar una bigida en un flujo de bits, para que sea literalmente solo una secuencia de bits.Luego, al decodificar este flujo de bits, generará el tipo de estructura de datos BIBINT estándar (matriz de enteros pequeños con un letrero).¿Cómo podría codificar el BIGINT como una secuencia de bits, y cómo lo decodificaría?No veo cómo realizar correctamente las manipulaciones de Bitwise o cómo codificar un número arbitrario en bits de más de 32 o 64. Si se requiere un idioma, lo haría en JavaScript.

Por ejemplo, esto toma bytes y lo convierte en un flujo de un solo bit:

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

¿Cómo harías ese mismo tipo de cosas para secuencias de bits arbitrariamente largas?

¿Fue útil?

Solución

Mira a Elias Delta o Gamma Codificación como ejemplo.

Otros consejos

Hay Muchas codificaciones comunes para enteros de longitud arbitraria. Yo diría que las representaciones más utilizadas son:

  • Representaciones de duración de duración, donde el número de bytes / palabras se escribe primero, seguido de los datos.
  • una representación de "bit de continuación". Si el tamaño de la palabra es b bits, entonces un entero se divide en grupos de bits de b-1 , con el bit de orden alto que denota si hay otro byte siguiente o no.

Puedes mezclar y coincidir con estos. La reglas básicas de codificación básicas son Un caso en punto, donde en el caso general, el campo de longitud está codificado en la base 128 utilizando la bit de continuidad. ASN.1 BER se usa en muchos protocolos de red, como VoIP, SNMP y LDAP, así como en La criptografía , donde representan grandes enteros es algo común.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a cs.stackexchange
scroll top