임의로 큰 bigint를 비트 시퀀스에 저장하는 방법이 있으며, 나중에 단지 표준 bigint 구조로 변환 할 수 있습니까?

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

  •  29-09-2020
  •  | 
  •  

문제

나는 비트 스트림으로의 bigint를 인코딩하는 방법을 상상하려고 노력하고 있으므로 문자 그대로 비트의 일련의 비트입니다.그런 다음이 비트 스트림을 디코딩 할 때 표준 BigInt 종류의 데이터 구조 (표시가있는 작은 정수 배열)를 생성합니다.BigInt를 비트 시퀀스로 인코딩 할 수 있으며 어떻게 해독 할 수 있습니까?Bitwise 조작을 올바르게 수행하는 방법이나 32 또는 64보다 큰 비트에서 임의의 숫자를 인코딩하는 방법이 보이지 않습니다. 언어가 필요하면 JavaScript 에서이 작업을 수행 할 것입니다.

예를 들어, 이것은 바이트가 걸리고이를 단일 비트 스트림으로 변환합니다.

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

임의로 긴 비트 시퀀스에 대해 동일한 종류의 일을 어떻게합니까?

도움이 되었습니까?

해결책

Elias Delta 또는 Gamma 코딩을 예로 들여다보십시오.

다른 팁

임의 길이 정수의 많은 공통 인코딩 가장 많이 사용되는 표현은 다음과 같습니다.

  • Length-data 표현, 바이트 / 단어 수가 먼저 쓰여지고 데이터가 뒤 따르는
  • 연속 비트 "표현. 단어 크기가 b 비트이면, 정수는 b-1 비트의 그룹으로 분리되며, 이는 다음과 같은 다른 바이트가 있는지 여부를 나타내는 고 순서 비트가 있고,

이들을 혼합하여 일치시킬 수 있습니다. ASN.1 기본 인코딩 규칙 는 일반적인 경우의 경우, 길이 필드는 Quintation 비트를 사용하여베이스 (128)로 인코딩된다. ASN.1 BER은 VoIP, SNMP 및 LDAP와 같은 많은 네트워크 프로토콜과 같은 암호화 , 큰 정수를 나타내는 것은 일반적인 것입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 cs.stackexchange
scroll top