KR20190038746A - 데이터 인코딩 방법, 장치 및 저장매체 - Google Patents
데이터 인코딩 방법, 장치 및 저장매체 Download PDFInfo
- Publication number
- KR20190038746A KR20190038746A KR1020187017276A KR20187017276A KR20190038746A KR 20190038746 A KR20190038746 A KR 20190038746A KR 1020187017276 A KR1020187017276 A KR 1020187017276A KR 20187017276 A KR20187017276 A KR 20187017276A KR 20190038746 A KR20190038746 A KR 20190038746A
- Authority
- KR
- South Korea
- Prior art keywords
- encoding
- current
- character
- interval
- encoded
- Prior art date
Links
Images
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/3068—Precoding preceding compression, e.g. Burrows-Wheeler transformation
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/40—Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/60—General implementation details not specific to a particular type of compression
- H03M7/6011—Encoder aspects
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/60—General implementation details not specific to a particular type of compression
- H03M7/6064—Selection of Compressor
- H03M7/6082—Selection strategies
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/70—Type of the data to be coded, other than image and sound
- H03M7/705—Unicode
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
본 발명은 데이터 인코딩 방법, 장치 및 저장매체를 공개하며, 이는 인코딩할 문자열을 획득하고; 제2 프리셋 문자가 인코딩할 문자열에서 연속적으로 출현하는 최대 횟수를 근거로 계수 임계치를 확정하며; 상기 계수 임계치보다 작은 인코딩 계수를 선택하고; 미리 설정된 구간의 길이와 인코딩 계수를 근거로 제1 인코딩 구간 및 제2 인코딩 구간을 확정하며; 상기 인코딩할 문자열에 대해 인코딩을 수행하여 인코딩값을 획득하고; 상기 인코딩값을 근거로 인코딩 결과를 생성하고 상기 인코딩 결과를 출력하는 단계를 포함한다.
Description
본 출원은 2017년 8월 30일에 중국 특허국에 제출된 것으로서, 출원번호는 201710765880.5이고, 발명의 명칭은 "데이터 인코딩 방법, 장치 및 저장매체"인 중국 특허 출원의 우선권을 청구하며, 그 내용은 전부 인용을 통해 본 출원에 결합시켰다.
본 발명은 컴퓨터 기술 분야에 관한 것으로서, 특히 데이터 인코딩 방법, 장치 및 저장매체에 관한 것이다.
데이터 압축이란 정보를 유실하지 않는다는 전제 하에, 데이터량을 감축하여 저장 공간을 감소시키고, 전송, 저장 및 처리 효율을 향상시키는 일종의 기술 방법을 말한다.
종래의 데이터 압축 기술은 유손실 압축과 무손실 압축을 포함하며, 압축 후의 데이터를 환원할 경우, 무손실 압축이란 압축 후의 데이터를 사용하여 복원(또는 환원, 압축해제라고 한다)시, 복원 후의 데이터가 원래의 데이터와 완전히 동일한 것을 말하고, 유손실 압축이란 압축 후의 데이터를 사용하여 복원 시, 복원 후의 데이터가 원래의 데이터와 다르나, 단 원래의 데이터가 나타내는 정보에 대한 잘못된 해석을 일으키지는 않는다. 현재, 데이터 압축 방식은 매우 많으며, 특징이 다른 데이터마다 상이한 데이터 압축방식(즉 인코딩 방식)이 있으나, 단 리던던시가 비교적 낮은 데이터, 예를 들어 2진 스트림(binary stream)의 경우, 종래의 압축방법으로 압축 후에는 압축된 데이터량이 제한적이고, 압축 효과가 떨어진다.
본 발명의 목적은 종래 데이터의 압축방법으로 감축되는 데이터량에 한계가 있고, 압축 효과가 떨어지는 기술문제를 해결하기 위한 데이터 인코딩 방법, 장치 및 저장매체를 제공하고자 하는데 있다.
상기 기술문제를 해결하기 위하여, 본 발명의 실시예는 이하 기술방안을 제공한다.
데이터 인코딩 방법은,
상기 제2 프리셋 문자가 인코딩할 문자열에서 연속적으로 출현하는 최대 횟수를 근거로 계수 임계치를 확정하는 단계;
프리셋 계수 테이블로부터 상기 계수 임계치보다 작은 인코딩 계수를 선택하는 단계;
상기 구간의 길이와 인코딩 계수를 근거로 상기 제1 프리셋 문자에 대응하는 제1 인코딩 구간, 및 제2 프리셋 문자에 대응하는 제2 인코딩 구간을 확정하는 단계;
상기 구간의 길이, 인코딩 계수, 제1 인코딩 구간 및 제2 인코딩 구간을 이용하여 상기 인코딩할 문자열에 대해 인코딩을 수행하여 인코딩값을 획득하는 단계;
상기 인코딩값을 근거로 인코딩 결과를 생성하고 상기 인코딩 결과를 출력하는 단계를 포함한다.
상기 기술문제를 해결하기 위하여, 본 발명의 실시예는 이하 기술방안을 더 제공한다.
데이터 인코딩 장치에 있어서,
다수의 제1 프리셋 문자와 제2 프리셋 문자가 포함된 인코딩할 문자열, 및 미리 설정된 구간의 길이를 획득하기 위한 획득모듈;
상기 제2 프리셋 문자가 인코딩할 문자열에서 연속적으로 출현하는 최대 횟수에 따라 계수 임계치를 확정하기 위한 제1 확정모듈;
프리셋 계수 테이블로부터 상기 계수 임계치보다 작은 인코딩 계수를 선택하기 위한 선택모듈;
상기 구간의 길이와 인코딩 계수에 따라 상기 제1 프리셋 문자에 대응하는 제1 인코딩 구간, 및 제2 프리셋 문자에 대응하는 제2 인코딩 구간을 확정하기 위한 제2 확정모듈;
상기 구간의 길이, 인코딩 계수, 제1 인코딩 구간 및 제2 인코딩 구간을 이용하여 상기 인코딩할 문자열에 대해 인코딩을 수행하여 인코딩값을 획득하는 인코딩 모듈;
상기 인코딩값에 따라 인코딩 결과를 생성하고 상기 인코딩 결과를 출력하기 위한 생성모듈을 포함한다.
또한, 상기 인코딩 모듈은 구체적으로
현재 인코딩할 문자, 현재의 인코딩 계수, 현재의 제1 인코딩 구간, 현재의 제2 인코딩 구간 및 현재의 구간 길이를 획득하기 위한 제1 획득 서브모듈;
현재의 인코딩할 문자에 따라 현재의 제1 인코딩 구간과 현재의 제2 인코딩 구간으로부터 목표 구간을 확정하기 위한 확정 서브모듈;
현재의 구간 길이, 현재의 인코딩 계수 및 목표 구간을 근거로 현재의 제1 인코딩 구간과 현재의 제2 인코딩 구간을 업데이트하여, 현재의 인코딩할 부호에 대해 인코딩을 수행하기 위한 업데이트 서브모듈;
인코딩 완료 시, 업데이트 후의 제1 인코딩 구간과 업데이트 후의 제2 인코딩 구간을 현재의 제1 인코딩 구간과 현재의 제2 인코딩 구간으로 삼고, 다음 인코딩할 문자를 현재의 인코딩할 문자로 삼아, 모든 인코딩할 문자의 인코딩이 완료될 때까지 현재의 인코딩할 부호, 현재의 인코딩 계수, 현재의 제1 인코딩 구간, 현재의 제2 인코딩 구간 및 현재의 구간 길이를 획득하는 조작을 반복 실행하기 위한 반복모듈을 포함한다.
또한, 상기 업데이트 서브모듈은 구체적으로,
현재의 구간 길이와 현재의 인코딩 계수를 근거로 다음 구간 길이를 계산하고;
상기 비교값, 다음 구간 길이 및 목표 구간의 최소 종단점값을 근거로, 현재의 제1 인코딩 구간과 현재의 제2 인코딩 구간을 업데이트하기 위한 것이다.
또한, 상기 업데이트 서브모듈은 구체적으로,
상기 다음 구간 길이와 최소 종단점값을 근거로 구간 상한치를 계산하고;
상기 비교값을 이용하여 상기 최소 종단점값과 구간 상한치 사이의 구간을 분할하여, 2개의 서브 구간을 획득하며;
분할 후의 비교적 작은 서브구간을 이용하여 현재의 제1 인코딩 구간에 대해 업데이트를 수행하고, 분할 후의 비교적 큰 서브구간을 이용하여 현재의 제2 인코딩 구간에 대해 업데이트를 수행하기 위한 것이다.
또한, 상기 반복모듈은
인코딩 완료 시, 상기 히스토리 인코딩 문자의 갯수를 통계내고;
히스토리 인코딩 문자의 개수와 현재의 인코딩 계수를 근거로 다음 인코딩 계수를 계산하며;
다음 인코딩 계수를 현재 인코딩 계수로 삼고, 다음 구간 길이를 현재의 구간 길이로 삼기 위한 것이다.
또한, 상기 인코딩 모듈은
모든 인코딩할 문자의 인코딩이 완료 시, 현재의 제2 인코딩 영역의 2개의 종단점값을 획득하기 위한 제2 획득 서브모듈;
상기 2개의 종단점값 상호 간의 가장 높은 자리의 숫자가 동일한지 여부를 판단하기 위한 판단 서브모듈;
판단결과가 '예'를 나타내면, 즉 상기 동일한 숫자를 목표 숫자로 하여 출력하고, 상기 가장 높은 자리와 인접한 다음 자리를 현재의 가장 높은 자리로 삼은 후, 현재의 제2 인코딩 구간의 2개의 종단점값을 획득하는 단계를 판단결과가 '아니오'를 나타낼 때까지 반복 실행하기 위한 출력 서브모듈;
출력 순서에 따라 상기 목표 숫자를 정렬하여 인코딩값을 획득하기 위한 정렬(sorting) 서브모듈을 더 포함한다.
또한, 상기 생성모듈은 구체적으로
상기 인코딩할 문자열 중 문자의 총 수량, 및 제2 프리셋 문자의 제2 수량을 통계내고;
상기 인코딩값, 제2 수량 및 총 수량을 상기 인코딩할 문자열의 인코딩 결과로 삼기 위한 것이다.
또한, 상기 데이터 인코딩 장치는 디코딩 모듈을 더 포함하며, 이는
인코딩 결과를 출력한 후, 상기 인코딩 결과를 지니는 디코딩 요청을 획득하고;
상기 디코딩 요청에 따라 기준 문자열을 생성하며, 상기 기준 문자열에는 상기 제1 수량의 제1 프리셋 문자, 및 제2 수량의 제2 프리셋 문자가 포함되며, 상기 제1 수량은 상기 총 수량과 제2 수량의 차이고, 상기 기준문자열의 가장 높은 자리의 문자는 상기 제2 프리셋 문자이며;
상기 기준 문자열을 근거로 상기 인코딩값을 디코딩하기 위한 것이다.
또한, 상기 디코딩 모듈은 구체적으로
현재의 기준문자열을 인코딩하여 기준 인코딩값을 획득하고;
상기 기준 인코딩값과 인코딩값을 근거로 디코딩 문자를 확정하여, 상기 디코딩 문자에 따라 현재 기준 문자열 중의 문자의 정렬 조합을 업데이트하며;
업데이트 후의 기준 문자열을 현재의 기준 문자열로 삼고, 현재의 기준 문자열을 인코딩하는 단계를 인코딩 횟수의 누계값이 상기 총 수량과 같아질 때까지 반복 실행하며;
모든 디코딩 문자를 근거로 디코딩 결과를 생성하기 위한 것이다.
또한, 상기 디코딩 모듈은 구체적으로,
상기 인코딩값의 말미부에 제1 프리셋 문자를 보충하여, 상기 인코딩값과 기준 인코딩값이 동일한 수량의 문자를 갖도록 하고;
보충 후의 인코딩값이 기준 인코딩값보다 작은지 여부를 판단하여;
'예'인 경우, 제2 프리셋 문자를 디코딩 문자로 확정하고;
'아니오'인 경우, 제1 프리셋 문자를 디코딩 문자로 확정하기 위한 것이다.
상기 기술문제를 해결하기 위하여, 본 발명의 실시예는 이하 기술방안을 더 제공한다.
프로세서가 상기 어느 한 항의 데이터 인코딩 방법 중의 단계를 실행하도록 로딩하기에 적합한 다수의 명령이 저장되는 저장매체를 더 제공한다.
본 발명이 제공하는 데이터 인코딩 방법, 장치 및 저장매체는 다수의 제1 프리셋 문자와 제2 프리셋 문자가 포함된 인코딩할 문자열, 및 미리 설정된 구간 길이를 획득하고, 상기 제2 프리셋 문자가 인코딩할 문자열에 연속적으로 출현하는 최대 횟수를 근거로 계수 임계치를 확정한 후, 프리셋 계수 테이블로부터 상기 계수 임계치보다 작은 인코딩 계수를 선택하고, 상기 구간 길이와 인코딩 계수를 근거로 상기 제1 프리셋 문자에 대응하는 제1 인코딩 구간, 및 제2 프리셋 문자에 대응하는 제2 인코딩 구간을 확정하며, 이후, 상기 구간 길이, 인코딩 계수, 제1 인코딩 구간과 제2 인코딩 구간을 이용하여 상기 인코딩할 문자열에 대해 인코딩을 수행하여 인코딩값을 획득하고, 상기 인코딩값을 근거로 인코딩 결과를 생성하여, 상기 인코딩 결과를 출력하는 단계를 통해, 2진 데이터의 무손실 압축을 비교적 양호하게 구현할 수 있으며, 압축 능력이 강화되고, 압축 효과가 우수하다.
이하 첨부도면을 결합하여, 본 발명의 구체적인 실시방식에 대한 상세한 묘사를 통해, 본 발명의 기술방안 및 기타 유익한 효과가 자명해질 것이다.
도 1a는 본 발명의 실시예가 제공하는 데이터 인코딩 방법의 흐름도이다.
도 1b는 본 발명의 실시예가 제공하는 단계 S105의 흐름도이다.
도 1c는 본 발명의 실시예가 제공하는 단계 S105의 또 다른 흐름도이다.
도 2는 본 발명의 실시예가 제공하는 데이터 인코딩 방법의 또 다른 흐름도이다.
도 3a는 본 발명의 실시예가 제공하는 데이터 인코딩 장치의 구조도이다.
도 3b는 본 발명의 실시예가 제공하는 인코딩 모듈의 구조도이다.
도 3c는 본 발명의 실시예가 제공하는 인코딩 모듈의 또 다른 구조도이다.
도 4는 본 발명의 실시예가 제공하는 전자장치의 구조도이다.
도 1a는 본 발명의 실시예가 제공하는 데이터 인코딩 방법의 흐름도이다.
도 1b는 본 발명의 실시예가 제공하는 단계 S105의 흐름도이다.
도 1c는 본 발명의 실시예가 제공하는 단계 S105의 또 다른 흐름도이다.
도 2는 본 발명의 실시예가 제공하는 데이터 인코딩 방법의 또 다른 흐름도이다.
도 3a는 본 발명의 실시예가 제공하는 데이터 인코딩 장치의 구조도이다.
도 3b는 본 발명의 실시예가 제공하는 인코딩 모듈의 구조도이다.
도 3c는 본 발명의 실시예가 제공하는 인코딩 모듈의 또 다른 구조도이다.
도 4는 본 발명의 실시예가 제공하는 전자장치의 구조도이다.
이하 본 발명의 실시예 중의 첨부도면을 결합하여, 본 발명의 실시예 중의 기술방안에 대해 명확하고 완전하게 설명하며, 묘사되는 실시예는 실시예 전체가 아니라 본 발명의 일부 실시예일 뿐임은 자명하다. 본 발명의 실시예를 바탕으로, 당업자가 창조적인 노동을 하지 않았음을 전제로 획득되는 기타 실시예는 모두 본 발명의 보호 범위에 속한다.
본 발명의 실시예는 데이터 인코딩 방법, 장치, 저장매체 및 전자장치를 제공하며, 이하 각각 상세히 설명한다.
일종의 데이터 인코딩 방법은 다수의 제1 프리셋 문자와 제2 프리셋 문자가 포함된 인코딩할 문자열, 및 미리 설정된 구간의 길이를 획득하는 단계; 상기 제2 프리셋 문자가 인코딩할 문자열에서 연속적으로 출현하는 최대 횟수를 근거로 계수 임계치를 확정하는 단계; 프리셋 계수 테이블로부터 상기 계수 임계치보다 작은 인코딩 계수를 선택하는 단계; 상기 구간의 길이와 인코딩 계수를 근거로 상기 제1 프리셋 문자에 대응하는 제1 인코딩 구간, 및 제2 프리셋 문자에 대응하는 제2 인코딩 구간을 확정하는 단계; 상기 구간의 길이, 인코딩 계수, 제1 인코딩 구간 및 제2 인코딩 구간을 이용하여 상기 인코딩할 문자열을 인코딩하여 인코딩값을 획득하는 단계; 상기 인코딩값에 따라 인코딩 결과를 생성하고 상기 인코딩 결과를 출력하는 단계를 포함한다.
도 1a에 도시된 바와 같이, 상기 데이터 인코딩 방법의 구체적인 과정은 다음과 같을 수 있다.
S101: 다수의 제1 프리셋 문자와 제2 프리셋 문자가 포함된 인코딩할 문자열, 및 미리 설정된 구간 길이를 획득하는 단계.
본 실시예에서, 상기 인코딩할 문자열은 2진 문자열을 포함하며, 상기 제1 프리셋 문자는 0일 수 있고, 상기 제2 프리셋 문자는 1일 수 있다. 상기 미리 설정된 구간 길이는 주로 인코딩하는 초기 공간의 크기를 한정하기 위한 것으로서, 이는 인위적으로 설정된 100000000000, 또는 그보다 클 수 있으며, 구체적으로는 실제 필요에 따라 설정할 수 있다.
S102: 상기 제2 프리셋 문자가 인코딩할 문자열 중 연속으로 출현하는 최대 횟수를 근거로 계수 임계치를 결정하는 단계.
본 실시예에서, 룩업 테이블 방식으로 상기 최대 횟수에 대응하는 계수 임계치를 획득할 수 있으며, 그 크기는 통상적으로 상기 인코딩할 문자열 중 1이 연속되는 갯수와만 관련이 있다. 1이 연속되는 갯수가 많을수록 임계치는 작아진다. 실제 응용 과정에서, 다량의 샘플에 대한 계산을 통해 계수값과 샘플 중 1이 연속되는 갯수의 관계를 귀납할 수 있으며, 이후 상이한 1이 연속되는 갯수에 대응하는 계수 임계치를 테이블에 저장하고, 필요 시, 직접 1이 연속되는 갯수에 따라 테이블에서 대응값을 획득하기만 하면 된다. 그 중, 상기 계산은 주로 공식 p(n)=
를 통해 구현하며, 그 중, i, j, n∈[1, Len], Len은 각 샘플의 문자의 총 길이이고, p(n)은 >1이며, T는 각 샘플 중 모든 부호의 총 통계치이고, f는 각 샘플 중의 어느 부호 자체의 통계치이며, O는 어느 부호 이전의 모든 부호의 누계 통계치이고, α는 계수치이며, p(n)의 변화를 통해 계수치와 샘플 중의 연속되는 1의 갯수의 관계를 결정한다.
S103: 프리셋 계수 테이블로부터 상기 계수 임계치보다 작은 인코딩 계수를 선택하는 단계.
본 실시예에서, 상기 프리셋 계수 테이블은 미리 설정할 수 있으며, 이는 1이 연속되는 상이한 갯수를 근거로 대응되는 계수 임계치를 미리 계산한 다음, 이러한 계수 임계치를 계수치로 삼아 작은 수에서 큰 수로 또는 큰 수에서 작은 수의 순서로 프리셋 계수 테이블에 저장할 수 있다. 이와 같이 하면, 인코딩 계수를 선택하여야 할 때, 먼저 프리셋 계수 테이블로부터 현재의 계수 임계치보다 작은 계수치를 선택할 수 있으며, 선택된 계수치가 단일한 경우, 직접 인코딩 계수로 삼을 수 있고, 선택된 계수치가 다수인 경우, 랜덤 또는 기타 설정방식을 통해 다수로부터 하나를 선택하여 인코딩 계수로 삼을 수 있다.
S104: 상기 구간 길이와 인코딩 계수를 근거로 상기 제1 프리셋 문자에 대응하는 제1 인코딩 구간, 및 제2 프리셋 문자에 대응하는 제2 인코딩 구간을 확정하는 단계.
본 실시예에서, 먼저 공식 R'0=R0*α0을 통해 구간 길이를 초기화시킬 수 있다. 여기서, R'0는 초기화 후의 구간 길이이고, R0는 미리 설정된 구간 길이이며, α0는 인코딩 계수이다. 예를 들어 α0가 1.1이고, R0가 100000000000이라면, 즉 초기화 후의 구간 길이 R'0는 110000000000이며, 이때, 초기화 구간은 [0, 110000000000]일 수 있다. 이후, 상기 초기화 구간을 분할하여, 비교적 작은 제1 인코딩 구간과 제2 인코딩 구간을 획득한다. 통상적으로, 2진 문자열의 경우, 그 분할 방식은 등분일 수 있으며, 다시 말해 상기 제1 인코딩 구간 U'0=[0,54999999999]이고, 상기 제2 인코딩 구간 U'1=[55000000000, 110000000000]이며, 또한 U'0는 문자 0에 대응하는 구간이고, U'1은 문자 1에 대응하는 구간이다. 여기서, U'0과 U'1의 구간길이는 R'0/2이다.
S105: 상기 구간 길이, 인코딩 계수, 제1 인코딩 구간과 제2 인코딩 구간을 이용하여 상기 인코딩할 문자열에 대해 인코딩을 수행하여 인코딩값을 획득하는 단계.
예를 들어, 도 1b를 참조하면, 상기 단계 S105는 구체적으로 이하 단계를 포함할 수 있다.
S1051: 현재 인코딩할 문자, 현재의 인코딩 계수, 현재의 제1 인코딩 구간, 현재의 제2 인코딩 구간과 현재의 구간 길이를 획득하는 단계.
본 실시예에서, 상기 인코딩 계수 αn은 끊임없이 변하는 것일 수도 있고, 하나의 고정값일 수도 있으며, 고정값인 경우, 이는 α0일 수 있고, 비고정값인 경우, (K(αn )=αn-αn -1을 통할 수 있으며, 여기서 K(αn )은 하나의 지정된 정성함수, 예를 들어 더하기, 곱하기, 로직(중요하거나 또는 중요하지 않은) 등일 수 있다. 상기 인코딩할 문자 Sn, 제1 인코딩 구간 U'0(n), 제2 인코딩 구간 U'1(n)과 구간 길이 R'n은 끊임없이 변하는 것으로서, 하나의 문자의 인코딩이 완료될 때마다 한 번씩 업데이트되며, 또한 처음 인코딩되는 경우, 상기 인코딩할 문자는 통상적으로 상기 인코딩할 문자열의 시작 문자로서, 이때, 상기 인코딩 계수는 α0이고, 상기 제1 인코딩 구간은 U'0(0)이며, 상기 제2 인코딩 구간은 U'1(0)이고, 상기 구간 길이(즉 U'0(0)와 U'1(0)의 총 길이)는 R'0이다.
S1052: 현재 인코딩할 문자를 근거로 현재의 제1 인코딩 구간과 현재의 제2 인코딩 구간으로부터 목표 구간을 확정하는 단계.
예를 들어, 상기 단계 S1052는 구체적으로
현재 인코딩할 문자가 상기 제1 프리셋 문자인지 여부를 판단하는 단계;
'예'인 경우, 현재의 제1 인코딩 구간을 목표 구간으로 확정하는 단계;
'아니오'인 경우, 현재의 제2 인코딩 구간을 목표 구간으로 확정하는 단계를 포함할 수 있다.
본 실시예에서, 인코딩 과정 중, 현재 인코딩할 문자 Sn에 대응되는 인코딩 구간을 찾아야 하며, 예를 들어 현재 인코딩할 문자 Sn이 0이라면, 즉 목표 구간은 U'0이고, 현재 인코딩할 문자 Sn이 1이라면, 목표 구간은 U'1이다.
S1053: 현재의 구간 길이, 현재의 인코딩 계수와 목표 구간을 근거로 현재의 제1 인코딩 구간과 현재의 제2 인코딩 구간을 업데이트하여, 현재 인코딩할 문자에 대해 인코딩을 수행하는 단계.
예를 들어, 상기 단계 S1053은 구체적으로 이하 단계를 포함할 수 있다.
1-1: 현재의 구간 길이와 현재의 인코딩 계수를 근거로 다음 구간 길이를 계산하는 단계.
본 실시예에서, 이며, n∈[1, Len]이이다. Len은 인코딩할 문자열의 총 길이이고, Ls는 인코딩할 문자열 중 부호 유형의 갯수이다. 예를 들어 2진 문자열의 경우, 그 부호는 0과 1만 포함되므로, Ls는 2이며, 이때, 등등이다.
1-2: 히스토리 인코딩 문자를 획득하고, 상기 히스토리 인코딩 문자와 현재 인코딩할 문자 중, 상기 제1 프리셋 문자와 제2 프리셋 문자의 비교값을 계산하는 단계.
본 실시예에서, 적응형 확률 통계 모델을 통해 동적 비교값 fk를 계산할 수 있다. 다시 말해 히스토리 인코딩 문자와 현재 인코딩할 문자 중 제1 프리셋 문자와 제2 프리셋 문자의 비를 즉시 계산할 수 있으며, fk≠fk -1이며, 예를 들어, 부호 서열이 1010000110010101000100010인 경우에 대하여, 현재의 인코딩 문자가 3번째 문자인 경우, 즉 상기 비교값은 1/2이다.
물론, 정적 통계 모델을 통해 정적 비교값 fk를 계산할 수도 있다. 다시 말해 직접 상기 비교값을 정적값(예를 들어 fk=1)으로 정의할 수 있으며, fk = fk -1이다.
1-3. 상기 비교값, 다음 구간 길이와 목표 구간 길이의 최소 종단점값을 근거로 현재의 제1 인코딩 구간과 현재의 제2 인코딩 구간에 대해 업데이트를 수행하는 단계.
예를 들어, 상기 단계 1-3은 구체적으로
상기 다음 구간 길이와 최소 종단점값을 근거로 구간 상한치을 계산하는 단계;
상기 비교값을 이용하여 상기 최소 종단점값과 구간 상한치 사이의 구간을 분할하여 2개의 서브구간을 획득하는 단계;
분할 후의 비교적 작은 서브구간을 이용하여 현재의 제1 인코딩 구간을 업데이트하고, 분할 후의 비교적 큰 서브구간을 이용하여 현재의 제2 인코딩 구간을 업데이트하는 단계를 포함할 수 있다.
본 실시예에서, 구간 상한치 H'n=L'n -1+R'n이며, L'n -1은 목표 구간의 최소 종단점이고, 적응형 확률 통계 모델에서, U'0(n)=[L'n -1, L'n -1+(fk/(fk+1))*R'n-1], U'1(n)=[L'n-1+(fk/(fk+1))*R'n, H'n]이다. 정적 확률 통계 모델에서, U'0(n)=[L'n -1, L'n-1+R'n/2-1], U'1(n)=[L'n -1+R'n/2, H'n]이다.
S1054: 인코딩 완료 시, 업데이트 후의 제1 인코딩 구간과 업데이트 후의 제2 인코딩 구간을 현재의 제1 인코딩 구간과 현재의 제2 인코딩 구간으로 삼고, 다음 인코딩할 문자를 현재의 인코딩할 문자로 삼아, 상기 단계 S1051을 모든 인코딩할 문자의 인코딩이 완료될 때까지 반복 실행하는 단계.
본 실시예에서, n=Len일 때, 모든 인코딩할 문자열의 인코딩이 완료되며, 이때, U'1(n)과 U'0(n)을 획득할 수 있다.
물론, 모든 인코딩할 문자의 인코딩 조작에 대하여, 인코딩 과정은 동일하며, 다시 말해 상기 인코딩할 문자열의 인코딩 과정은 끊임 없이 순환하는 과정이다. 순환이 정상적으로 진행될 수 있도록 하기 위하여, 매 회 순환과 관련하여 인코딩 계수와 구간 길이는 부단히 업데이트되어야 하며, 다시 말해 각각의 인코딩할 문자에 대하여, 인코딩 완료 시, 상기 데이터 인코딩 방법은 또한
상기 히스토리 인코딩 문자의 갯수를 통계내는 단계;
히스토리 인코딩 문자의 갯수와 현재의 인코딩 계수를 근거로 다음 인코딩 계수를 계산하는 단계;
다음 인코딩 계수를 현재의 인코딩 계수로 삼고, 다음 구간 길이를 현재의 구간 길이로 삼는 단계를 더 포함할 수 있다.
본 실시예에서, 상기 인코딩 계수 αn은 정적값, 예를 들어 αn=α0일 수도 있고, 동적값일 수도 있으며, 동적값일 경우, K(αn )=αn-αn -1이다. 여기서 n-1은 히스토리 인코딩 문자의 갯수이며, 이번 인코딩 조작이 완료되었을 때, 다음번 인코딩 조작에 대하여, 인코딩 계수는 αn이고, 구간 길이는 R'n이다.
이밖에, 모든 인코딩할 문자의 인코딩이 완료되었을 때 얻어진 것은 U'1(n)과 U'0(n)이고, 상기 인코딩할 문자열의 인코딩값은 U'1(n)과 U'0(n) 중의 어느 하나의 값일 수 있기 때문에, 도 1c를 참조하면, 상기 단계 S105는 또한
S1055: 모든 인코딩할 문자의 인코딩이 완료되었을 때, 현재의 제2 인코딩 구간의 2개의 종단점값을 획득하는 단계;
S1056: 상기 2개의 종단점값 상호 간의 현재 가장 높은 자리의 숫자가 동일한지 여부를 판단하는 단계;
S1057: 판단 결과가 '예'를 지시하는 경우, 상기 동일한 숫자를 목표 숫자로 삼아 출력하고, 상기 가장 높은 자리와 이웃한 다음 자리를 현재의 가장 높은 자리로 삼은 후, S1055를 판단 결과가 '아니오'를 지시할 때까지 반복 실행하는 단계;
S1058: 출력 순서에 따라 상기 목표 숫자를 정렬하여 인코딩값을 획득하는 단계를 더 포함할 수 있다.
본 실시예에서, U'1(n)=[73042919870,73042952160]이라면, 즉 인코딩값 V는 730429이다.
S106: 상기 인코딩값을 근거로 인코딩 결과를 생성하고, 상기 인코딩 결과를 출력하는 단계.
예를 들어, 상기 단계 S106은 구체적으로
상기 인코딩할 문자열 중 문자의 총 수량, 및 제2 프리셋 문자의 제2 수량을 통계내는 단계;
상기 인코딩값, 제2 수량과 총 수량을 상기 인코딩할 문자열의 인코딩 결과로 삼는 단계를 포함할 수 있다.
본 실시예에서, 인코딩할 문자열이 1010000110010101000100010라면, 즉 총 수량 Len은 25이고, 제2 수량 Count는 9이며, 인코딩 결과는 V, Count, Len이다.
이밖에, 인코딩 결과를 출력한 후, 디코딩 조작이 더 이루어지며, 다시 말해, 상기 데이터 인코딩 방법은 다음 단계를 더 포함할 수 있다.
2-1: 상기 인코딩 결과를 지니는 디코딩 요청을 획득하는 단계.
2-2: 상기 디코딩 요청을 근거로 기준 문자열을 생성하는 단계, 상기 기준 문자열은 제1 수량의 제1 프리셋 문자, 및 제2 수량의 제2 프리셋 문자를 포함하고, 상기 제1 수량은 상기 총 수량과 제2 수량의 차이며, 상기 기준 문자열의 가장 높은 자리 문자는 상기 제2 프리셋 문자이다.
본 실시예에서, Count=9,Len=25인 경우, 즉 제1 수량은 16이고, 상기 기준 문자열의 길이 역시 25개의 문자이며, 또한 시작 문자는 1이고, 끝 문자는 전부 1이다. 다시 말해 상기 기준 문자열의 초기 서열은 1000000000000000011111111이다.
2-3. 상기 기준 문자열을 근거로 상기 인코딩값에 대해 디코딩을 수행하는 단계.
예를 들어, 상기 단계 2-3은 구체적으로
현재의 기준 문자열에 대해 인코딩을 수행하여 기준 인코딩값을 획득하는 단계;
상기 기준 인코딩값과 인코딩값을 근거로 디코딩 문자를 확정하고, 상기 디코딩 문자를 근거로 현재의 기준 문자열 중 문자의 배열 조합을 업데이트하는 단계;
업데이트 후의 기준 문자열을 현재의 기준 문자열로 삼고, 현재의 기준 문자열에 대해 인코딩을 수행하는 단계를 인코딩 횟수의 누계값이 상기 총 수량과 같아질 때까지 반복 실행하는 단계;
모든 디코딩 문자를 근거로 디코딩 결과를 생성하는 단계를 포함할 수 있다.
본 실시예에서, 각 기준 문자열마다, 모두 상기 인코딩 방법에 따라 기준 문자열 중의 모든 문자에 대해 인코딩을 수행할 수 있으며, 미리 설정된 구간 길이 역시 R0이고, 초기 인코딩 계수 역시 α0이며, 기준 문자열 중의 모든 문자가 모두 인코딩이 완료되었을 때, 최종적으로 문자 0에 대응하는 제1 인코딩 구간 D'0과 문자 1에 대응하는 제2 인코딩 구간 D'1을 획득하며, 다른 점은, 상기 기준 문자열의 인코딩값(즉 기준 인코딩값)은 결코 높은 자리와 동일한 수치가 아니라, 먼저 직접 D'0의 최소 종단점값을 취하여 Tn으로 삼은 다음 지정함수 tn=Tny(n)를 근거로 기준 인코딩값 tn을 계산한다는데 있으며, 그 중 함수 y(n)은 테스트를 통해 얻어진 것이고, αn과 관련이 있다. 이후, 기준 인코딩값 tn과 인코딩값 V를 근거로 디코딩 문자를 확정하며, 상기 디코딩 문자는 주로 1과 0을 포함한다. 인코딩 횟수가 Len에 도달했을 때, 모든 디코딩 문자를 확정된 순서대로 배열할 수 있으며, 최종적으로 획득되는 문자열이 즉 디코딩 결과이다.
설명해두어야 할 점으로, 상기 현재의 기준 문자열은 끊임없이 변하는 것이며, 매 회 변화는 이전 기준 문자열 및 그 기준 인코딩값 tn에 의해 정해진다. 다시 말해 이전 기준 문자열 및 그 기준 인코딩값 tn을 근거로 현재의 기준 문자열 중 문자 1과 0의 배열 위치를 재조정한다. 상기 조정은 주로 문자 1의 이동과 관련되며, 예를 들어 이전 기준 문자열이 1100000000000000001111111이라면, 디코딩 문자가 1일 때, 1100000000000000001111111중 말미부의 가장 높은 자리의 문자 1을 전단부의 가장 낮은 위치의 문자 1의 뒤로 이동시켜, 1110000000000000000111111(즉 업데이트 후의 기준 문자열)을 획득하고, 디코딩 문자가 0일 때, 1100000000000000001111111중 전단부의 가장 낮은 자리의 문자 1을 한 자리 뒤로 이동시켜, 1010000000000000001111111(즉 업데이트 후의 기준 문자열)을 획득한다.
또한, 상기 "상기 기준 인코딩값과 인코딩값을 근거로 디코딩 문자를 확정하는 단계"는 구체적으로
상기 인코딩값의 말미부에 제1 프리셋 문자를 보충하여, 상기 인코딩값과 기준 인코딩값이 동일한 수량의 문자를 갖도록 하는 단계;
보충 후의 인코딩값이 기준 인코딩값보다 작은지 여부를 판단하는 단계;
'예'인 경우, 제2 프리셋 문자를 디코딩 문자로 확정하는 단계;
'아니오'인 경우, 제1 프리셋 문자를 디코딩 문자로 확정하는 단계를 포함할 수 있다.
본 실시예에서, V=730429일 때, n번째 조작에 대하여, 기준 인코딩값이 tn=85252570554라면, 즉 V에 0을 보충한 후 V'=73042900000가 될 수 있으며, 이때, tn>V'이고, 획득되는 디코딩 문자는 0이다. 기준 인코딩값이 tn= 55004691494라면, 이때, tn≤V'이며, 획득되는 디코딩 문자는 1이다.
상기 실시예에 묘사된 방법에 따라, 이하 예를 들어 좀 더 구체적으로 상세히 설명한다.
본 실시예에서, 데이터 인코딩 장치를 전자장치에 집적하였고, 상기 확률 통계 모델은 정적 확률 통계 모델이며, 상기 인코딩 계수는 정적값을 예로 들어 상세히 설명한다.
도 2에 도시된 바와 같이, 데이터 인코딩 방법의 구체적인 과정은 다음과 같을 수 있다.
S201: 전자장치가 다수의 제1 프리셋 문자와 제2 프리셋 문자를 포함하는 인코딩할 문자열, 및 미리 설정된 구간 길이를 획득하는 단계.
예를 들어, 상기 인코딩할 문자열은 1010000110010101000100010일 수 있고, 상기 미리 설정된 구간 길이 R0=100000000000이며, 상기 제1 프리셋 문자는 0이고, 상기 제2 프리셋 문자는 1이다.
S202: 전자장치가 상기 제2 프리셋 문자가 인코딩할 문자열에 연속적으로 출현하는 최대 횟수를 근거로 계수 임계치를 확정하고, 프리셋 계수 테이블로부터 상기 계수 임계치보다 작은 인코딩 계수를 선택하는 단계.
예를 들어, 1010000110010101000100010의 경우, 1이 연속으로 출현하는 최대 횟수는 2이며, 테이블로부터 확정된 계수 임계치는 1.153133...3일 수 있다. 이에 따라 프리셋 계수 테이블 중 (0, 1.153133...3)에 속하는 어느 하나의 계수를 인코딩 계수 α0으로 삼을 수 있으며, 예를 들어 α0=1.1을 선택한다.
S203: 전자장치가 상기 구간 길이와 인코딩 계수를 근거로 상기 제1 프리셋 문자에 대응하는 제1 인코딩 구간, 및 제2 프리셋 문자에 대응하는 제2 인코딩 구간을 확정하는 단계.
예를 들어, 먼저 공식 R'0=R0*α0을 통해 구간 길이를 초기화시킬 수 있으며, 초기화 후의 구간 길이 R'0=110000000000을 획득한 후, 등분 방식을 통해, 제1 인코딩 구간 U'0(0)=[0, 54999999999], 제2 인코딩 구간 U'1(0)=[55000000000, 110000000000]을 획득할 수 있다.
S204: 전자장치가 현재의 인코딩할 문자, 현재의 인코딩 계수, 현재의 제1 인코딩 구간, 현재의 제2 인코딩 구간과 현재의 구간 길이를 획득하는 단계.
S205: 현재의 인코딩할 문자가 상기 제1 프리셋 문자인 경우, 전자장치가 현재의 제1 인코딩 구간을 목표 구간으로 확정하고, 현재의 인코딩할 문자가 상기 제2 프리셋 문자인 경우, 전자장치가 현재의 제2 인코딩 구간을 목표 구간으로 확정하는 단계.
S206: 전자장치가 현재의 구간 길이와 현재의 인코딩 계수를 근거로 다음 구간 길이를 계산하고, 상기 다음 구간 길이와 목표 구간의 최소 종단점값을 근거로 구간 상한치를 계산하는 단계.
S207: 전자장치가 상기 최소 종단점값과 구간 상한치 간의 구간을 등분하여 2개의 서브구간을 획득하며, 분할 후 비교적 작은 서브구간을 현재의 제1 인코딩 구간으로 삼고, 분할 후 비교적 큰 서브구간을 현재의 제2 인코딩 구간으로 삼는 단계.
S208: 전자장치가 상기 인코딩할 문자열의 인코딩 완료 여부를 판단하여, '아니오'인 경우, 다음 인코딩할 문자를 현재의 인코딩할 문자로 삼고, 다음 구간 길이를 현재의 구간 길이로 삼아, 상기 단계 S204를 반복 실행하며, '예'인 경우, 다음 단계 S209를 실행하는 단계.
예를 들어, αn=α0=1.1, Ls=2, fk=1, k∈[1, Ls]이며, 인코딩할 문자열이 1010000110010101000100010이라면, 전체적인 인코딩 과정은 다음과 같다:
첫 번째 인코딩할 문자 1을 획득하고, R'1/2=30250000000이며, 구간 U'1(0)을 사용 및 조정하여 U'0(1)=[55000000000, 85249999999], U'1(1)=[85250000000, 115500000000]을 획득한다.
두 번째 인코딩할 문자 0을 획득하고, R'2/2=16637500000이며; 구간 U'0(1)을 사용 및 조정하여 U'0(2)=[55000000000, 71637499999], U'1(2)=[71637500000, 88275000000]을 획득한다.
세 번째 인코딩할 문자 1을 획득하고, R'3/2=9150625000이며; 구간 U'1(2)를 사용 및 조정하여 U'0(3)=[71637500000, 80788124999], U'1(3)=[80788125000, 89938750000]을 획득한다.
네 번째 인코딩할 문자 0을 획득하고, R'4/2=5032843750이며; 구간 U'0(3)을 사용 및 조정하여 U'0(4)=[71637500000, 76670343749], U'1(4)=[76670343750, 81703187500]을 획득하며, 이와 같이 유추하여 하기 표 1을 획득한다.
부호 | 부호0의L | 부호0의H | 부호1의L | 부호1의H | |
\ | 100000000000 | \ | \ | \ | \ |
1 | 55000000000 | 0 | 54999999999 | 55000000000 | 110000000000 |
0 | 30250000000 | 55000000000 | 85249999999 | 85250000000 | 115500000000 |
1 | 16637500000 | 55000000000 | 71637499999 | 71637500000 | 88275000000 |
0 | 9150625000 | 71637500000 | 80788124999 | 80788125000 | 89938750000 |
0 | 5032843750 | 71637500000 | 76670343749 | 76670343750 | 81703187500 |
0 | 2768064063 | 71637500000 | 74405564062 | 74405564063 | 77173628125 |
0 | 1522435234 | 71637500000 | 73159935233 | 73159935234 | 74682370469 |
1 | 837339379 | 71637500000 | 72474839378 | 72474839379 | 73312178758 |
1 | 460536658 | 72474839379 | 72935376036 | 72935376037 | 73395912696 |
0 | 253295162 | 72935376037 | 73188671198 | 73188671199 | 73441966362 |
0 | 139312339 | 72935376037 | 73074688375 | 73074688376 | 73214000716 |
1 | 76621787 | 72935376037 | 73011997823 | 73011997824 | 73088619610 |
0 | 42141983 | 73011997824 | 73054139805 | 73054139806 | 73096281789 |
1 | 23178090 | 73011997824 | 73035175913 | 73035175914 | 73058354005 |
0 | 12747950 | 73035175914 | 73047923863 | 73047923864 | 73060671814 |
1 | 7011372 | 73035175914 | 73042187286 | 73042187287 | 73049198659 |
0 | 3856255 | 73042187287 | 73046043540 | 73046043541 | 73049899796 |
0 | 2120940 | 73042187287 | 73044308226 | 73044308227 | 73046429167 |
0 | 1166517 | 73042187287 | 73043353803 | 73043353804 | 73044520321 |
1 | 641584 | 73042187287 | 73042828870 | 73042828871 | 73043470455 |
0 | 352871 | 73042828871 | 73043181741 | 73043181742 | 73043534614 |
0 | 194079 | 73042828871 | 73043022949 | 73043022950 | 73043217030 |
0 | 106744 | 73042828871 | 73042935614 | 73042935615 | 73043042358 |
1 | 58709 | 73042828871 | 73042887579 | 73042887580 | 73042946289 |
0 | 32290 | 73042887580 | 73042919869 | 73042919870 | 73042952160 |
S209: 전자장치가 현재의 제2 인코딩 구간의 2개의 종단점값을 취하여, 상기 2개의 종단점값 상호 간의 현재의 가장 높은 자리의 숫자가 동일한지 여부를 판단하여, '예'인 경우, 다음 단계 S210을 실행하고, '아니오'인 경우, 즉 하기 단계 S211을 실행하는 단계.
S210: 전자장치가 상기 동일한 숫자를 목표 숫자로 삼아 출력하고, 상기 가장 높은 자리와 이웃한 다음 자리를 현재의 가장 높은 자리로 삼은 후, 상기 단계 S209를 반복 실행하는 단계.
예를 들어, U'1(25)=[73042919870, 73042952160]의 경우, 출력되는 목표 숫자는 7,3,0,4,2,9를 포함한다.
S211: 전자장치가 출력 순서에 따라 상기 목표 숫자를 정렬(sorting)하여 인코딩값을 획득한 후, 상기 인코딩할 문자열 중 문자의 총 수량, 및 제2 프리셋 문자의 제2 수량을 통계내어, 상기 인코딩값, 제2 수량과 총 수량을 상기 인코딩할 문자열의 인코딩 결과로 삼는 단계.
예를 들어, 통계 낸 총 수량 Len이 25이고, 제2 수량 Count가 9라면, 출력 순서에 따라 목표 숫자를 정렬한 후, 인코딩값 V은 730429이고, 인코딩 결과는 V, Count, Len이 된다. 설명해두어야 할 점으로, 종래의 인코딩 결과인 63118085에 비해, V=730429로 단 6개의 수치이므로, 2개의 수치가 감소하여 압축비가 25% 향상되며, 압축능력이 현저하게 향상되고, 압축 효과가 양호하다.
S212: 전자장치가 상기 인코딩 결과를 지닌 디코딩 요청을 획득하는 단계.
S213: 전자장치가 상기 디코딩 요청을 근거로 기준 문자열을 생성하는 단계. 상기 기준 문자열에 제1 수량의 제1 프리셋 문자, 및 제2 수량의 제2 프리셋 문자가 포함되며, 상기 제1 수량은 상기 총 수량과 제2 수량의 차이고, 상기 기준 문자열의 가장 높은 자리의 문자는 상기 제2 프리셋 문자이다.
예를 들어, Count=9, Len=25인 경우, 즉 제1 수량은 16이고, 상기 기준 문자열의 길이는 25개의 문자이며, 또한 시작 문자는 1이고, 끝 문자는 전부 1이다. 다시 말해 상기 기준 문자열의 초기 서열은 1000000000000000011111111이다.
S214: 전자장치가 현재의 기준 문자열에 대해 인코딩을 수행하여 기준 인코딩값을 획득하고, 상기 인코딩값의 말미부에 제1 프리셋 문자를 보충하여, 상기 인코딩값과 기준 인코딩값이 동일한 수량의 문자를 갖도록 한 후, 보충 후의 인코딩값이 기준 인코딩값보다 작은지 여부를 판단하여, '예'인 경우, 즉 제2 프리셋 문자를 디코딩 문자로 확정하고, '아니오'인 경우, 즉 제1 프리셋 문자를 디코딩 문자로 확정하는 단계.
S215: 전자장치가 상기 디코딩 문자를 근거로 현재의 기준 문자열 중 문자의 정렬 조합을 업데이트하고, 업데이트 후의 기준 문자열을 현재의 기준 문자열로 삼은 후, 상기 단계 S214를 인코딩 횟수의 누계치가 상기 총 수량과 같아질 때까지 반복 실행하고; 이후 모든 디코딩 문자를 근거로 디코딩 결과를 생성하는 단계.
예를 들어, 실험을 통해 α0=1.1일 때, y(n)≒1임을 알 수 있으므로, 따라서 인코딩을 수행하는 과정에서, y(n)=1, 다시 말해 Tny(n)= tn 또는 V/y(n) =v이다. 물론, 상기 기준 문자열의 인코딩 방법은 인코딩할 문자열의 인코딩 방법을 참조할 수 있으며, 여기서는 중복 설명을 생략한다. 유일하게 다른 점은, 최종적으로 문자 0에 대응하는 제1 인코딩 구간 D'0과 문자 1에 대응하는 제2 인코딩 구간 D'1을 획득 시, 상기 기준 문자열의 기준 인코딩값은 결코 높은 자리의 동일한 수치가 아니라, 직접 D'0의 최소 종단점값을 취하여 Tn으로 삼은 다음, Tny(n)= tn을 근거로 기준 인코딩값 tn을 획득한다는 것이다. 전체적인 디코딩 과정은 다음과 같다.
Count=9,Len=25 및 V=730429를 취하여, 기준 문자열 1000000000000000011111111을 획득한다.
1000000000000000011111111을 근거로 그 기준 인코딩값 t0=55004691494를 획득하고, 인코딩값 V의 말미부에 0을 보충하여 V'=73042900000를 획득하며, V'<t0이므로, 디코딩 문자 1을 출력한다;
Count=Count-1(부호 1을 디코딩했을 때에만 1을 뺀다), Len=Len-1이다. 이때, 1000000000000000011111111을 조정하여 기준 문자열 1100000000000000001111111을 획득하고, 1100000000000000001111111을 근거로 그 기준 인코딩값 t1=85252570554를 획득하며, V'<t1이므로, 0을 출력한다;
Count=Count-0(부호 1을 디코딩했을 때에만 1을 뺀다), Len=Len-1이다. 이때, 1100000000000000001111111을 조정하여 기준 문자열 1010000000000000001111111을 획득하고, t2=71640070554를 얻으며, V'>t2이므로, 부호 1을 출력한다;
Count=Count-1(부호 1을 디코딩했을 때에만 1을 뺀다), Len=Len-1이다. 이때, 1010000000000000001111111을 조정하여 기준 문자열 1011000000000000000111111을 획득하고, 1011000000000000000111111을 근거로 t3=80789529037을 획득한다. V'<t3이므로, 부호 0을 출력하며;
이와 같이 유추하며, 1011000000000000000111111을 조정하여 기준 문자열 1010100000000000000111111을 획득하고, 1010100000000000000111111을 이용하여 계속 디코딩하며, Len=0일 때 디코딩을 종료한다. 하기 표 2를 참조하면, 이는 상기 디코딩 과정에서 획득된 결과이며, 하기 표를 통해 디코딩 결과가 1010000110010101000100010임을 알 수 있다. 다시 말해 인코딩할 서열을 완전하게 획득할 수 있으며, 즉 상기 인코딩 방법은 무손실 압축 방법으로서, 이러한 압축 방법은 주로 word 등 환원 정도에 대한 요구가 높은 데이터 유형에 응용된다.
tn | V' | 디코딩 문자 |
55004691494 | 73042900000 | 1 |
85252570554 | 73042900000 | 0 |
71640070554 | 73042900000 | 1 |
80789529037 | 73042900000 | 0 |
76671747787 | 73042900000 | 0 |
74406968100 | 73042900000 | 0 |
73161339271 | 73042900000 | 0 |
72476243416 | 73042900000 | 1 |
72936138490 | 73042900000 | 1 |
73189080781 | 73042900000 | 0 |
73075097958 | 73042900000 | 0 |
73012407405 | 73042900000 | 1 |
73054355308 | 73042900000 | 0 |
73035391416 | 73042900000 | 1 |
73048032622 | 73042900000 | 0 |
73042296045 | 73042900000 | 1 |
73046093591 | 73042900000 | 0 |
73044358276 | 73042900000 | 0 |
73043403853 | 73042900000 | 0 |
73042878920 | 73042900000 | 1 |
73043181742 | 73042900000 | 0 |
73043022950 | 73042900000 | 0 |
73042935615 | 73042900000 | 0 |
73042887580 | 73042900000 | 1 |
73042937629 | 73042900000 | 0 |
이상의 내용을 통해 알 수 있듯이, 본 실시예가 제공하는 데이터 인코딩 방법은, 그 중 전자장치가 다수의 제1 프리셋 문자와 제2 프리셋 문자가 포함된 인코딩할 문자열, 및 미리 설정된 구간 길이를 획득하고, 이어서, 상기 제2 프리셋 문자가 인코딩할 문자열에 연속적으로 출현하는 최대 횟수를 근거로 계수 임계치를 확정하고, 프리셋 계수 테이블로부터 상기 계수 임계치보다 작은 인코딩 계수를 선택하며, 이어서, 상기 구간 길이와 인코딩 계수를 근거로 상기 제1 프리셋 문자에 대응하는 제1 인코딩 구간, 및 제2 프리셋 문자에 대응하는 제2 인코딩 구간을 확정하고, 이어서, 현재 인코딩할 문자, 현재의 인코딩 계수, 현재의 제1 인코딩 구간, 현재의 제2 인코딩 구간 및 현재의 구간 길이를 획득하며, 이어서, 현재 인코딩할 문자가 상기 제1 프리셋 문자인지 여부를 판단하여, '예'인 경우, 현재의 제1 인코딩 구간을 목표 구간으로 확정하고, '아니오'인 경우, 현재의 제2 인코딩 구간을 목표 구간으로 확정하며, 이어서, 현재의 구간 길이와 현재의 인코딩 계수를 근거로 다음 구간 길이를 계산하고, 상기 다음 구간 길이와 목표 구간의 최소 종단점값을 근거로 구간 상한치를 계산하며, 이어서, 상기 최소 종단점과 구간 상한치 간의 구간을 등분하여 2개의 서브구간을 획득하고, 분할 후의 비교적 작은 서브구간을 현재의 제1 인코딩 구간으로 삼고, 분할 후의 비교적 큰 서브구간을 현재의 제2 인코딩 구간으로 삼으며, 다음 인코딩할 문자를 현재의 인코딩할 문자로 삼고, 다음 구간 길이를 현재의 구간 길이로 삼은 후, 현재 인코딩할 문자, 현재의 인코딩 계수, 현재의 제1 인코딩 구간, 현재의 제2 인코딩 구간과 현재의 구간 길이를 획득하는 조작을 반복 실행하며, 모든 인코딩할 문자의 인코딩이 완료되었을 때, 전자장치는 현재의 제2 인코딩 구간의 2개의 종단점값을 획득하고, 상기 2개의 종단점값 상호 간의 가장 높은 자리의 숫자가 동일한지 여부를 판단하여, '예'인 경우, 상기 동일한 숫자를 목표 숫자로 삼아 출력하고, 상기 가장 높은 자리와 이웃한 다음 자리를 현재의 가장 높은 자리로 삼은 후, 현재의 제2 인코딩 구간의 2개의 종단점값을 획득하는 조작을 반복 실행하며, '아니오'인 경우, 즉 출력 순서에 따라 상기 목표 숫자를 정렬하여 인코딩값을 획득한 후, 상기 인코딩할 문자열 중 문자의 총 수량, 및 제2 프리셋 문자의 제2 수량을 통계내고, 상기 인코딩값, 제2 수량과 총 수량을 상기 인코딩할 문자열의 인코딩 결과로 삼음으로써, 2진 문자열의 인코딩 조작을 원활하게 구현할 수 있으며, 압축 능력이 강화된다. 이후, 전자장치는 상기 인코딩 결과를 지니는 디코딩 요청을 획득하고, 이어서, 상기 디코딩 요청을 근거로 기준 문자열을 생성하며, 상기 기준 문자열에는 제1 수량의 제1 프리셋 문자, 및 제2 수량의 제2 프리셋 문자가 포함되고, 상기 제1 수량은 상기 총 수량과 제2 수량의 차와 같으며, 상기 기준 문자열의 가장 높은 자리 문자는 상기 제2 프리셋 문자이며, 이어서, 현재 기준 문자열에 대해 인코딩을 수행하여 기준 인코딩값을 획득하고, 이어서, 상기 인코딩값의 말미부에 제1 프리셋 문자를 보충하여, 상기 인코딩값과 기준 인코딩값이 동일한 수량의 문자를 갖도록 하고, 보충 후의 인코딩값이 기준 인코딩값보다 작은지 여부를 판단하여, '예'인 경우, 제2 프리셋 문자를 디코딩 문자로 확정하고, '아니오'인 경우, 즉 제1 프리셋 문자를 디코딩 문자로 확정하며, 이어서, 상기 디코딩 문자를 근거로 현재의 기준 문자열 중 문자의 정렬 조합에 대해 업데이트를 수행하고, 업데이트 후의 기준 문자열을 현재의 기준 문자열로 삼은 후, 현재의 기준 문자열에 대한 인코딩을 수행하여 기준 인코딩값을 획득하는 조작을 인코딩 횟수의 누계치가 상기 총 수량과 같아질 때까지 반복 실행하고, 마지막으로 모든 디코딩 문자를 근거로 디코딩 결과를 생성함으로써, 2진 문자열의 무손실 압축을 구현하며, 방법이 단순하고, 원활성이 높다.
상기 실시예에 묘사된 방법에 따라, 본 실시예는 데이터 인코딩 장치의 각도로 추가적으로 설명한다. 상기 데이터 인코딩 장치는 구체적으로 독립된 실체로서 구현될 수도 있고, 단말 또는 서버 등의 전자장치에 집적시켜 구현될 수도 있다. 상기 전자장치는 스마트폰, 태블릿 컴퓨터 및 개인용 컴퓨터 등일 수 있다.
도 3a를 참조하면, 도 3a는 본 발명의 실시예가 제공하는 데이터 인코딩 장치를 구체적으로 묘사한 것으로서, 획득모듈(10), 제1 확정모듈(20), 선택모듈(30), 제2 확정모듈(40), 인코딩 모듈(50)과 생성모듈(60)을 포함할 수 있다. 그 중
(1)획득모듈(10)
획득모듈(10)은 다수의 제1 프리셋 문자와 제2 프리셋 문자가 포함되는 인코딩할 문자열, 및 미리 설정된 구간 길이를 획득하기 위한 것이다.
본 실시예에서, 상기 인코딩할 문자열은 2진 문자열을 포함하며, 상기 제1 프리셋 문자는 0일 수 있고, 상기 제2 프리셋 문자는 1일 수 있다. 상기 미리 설정된 구간 길이는 주로 인코딩하는 초기 공간의 크기를 한정하기 위한 것으로서, 이는 인위적으로 설정된 100000000000, 또는 그보다 클 수 있으며, 구체적으로는 실제 필요에 따라 설정할 수 있다.
(2) 제1 확정모듈(20)
제1 확정모듈(20)은 상기 제2 프리셋 문자가 인코딩할 문자열에 연속적으로 출현하는 최대 횟수를 근거로 계수 임계치를 확정하기 위한 것이다.
본 실시예에서, 룩업 테이블 방식으로 상기 최대 횟수에 대응하는 계수 임계치를 획득할 수 있으며, 그 크기는 통상적으로 상기 인코딩할 문자열 중 1이 연속되는 갯수와만 관련이 있다. 1이 연속되는 갯수가 많을수록 임계치는 작아진다. 실제 응용 과정에서, 다량의 샘플에 대한 계산을 통해 계수값과 샘플 중 1이 연속되는 갯수의 관계를 귀납할 수 있으며, 이후 상이한 1이 연속되는 갯수에 대응하는 계수 임계치를 테이블에 저장하고, 필요 시, 직접 1이 연속되는 갯수에 따라 테이블에서 대응값을 획득하기만 하면 된다. 그 중, 상기 계산은 주로 공식 p(n)=
를 통해 구현하며, 그 중, i, j, n∈[1, Len], Len은 각 샘플의 문자의 총 길이이고, p(n)은 >1이며, T는 각 샘플 중 모든 부호의 총 통계치이고, f는 각 샘플 중의 어느 부호 자체의 통계치이며, 0는 어느 부호 이전의 모든 부호의 누계 통계치이고, α는 계수치이며, p(n)의 변화를 통해 계수치와 샘플 중의 연속되는 1의 갯수의 관계를 결정한다.
(3) 선택모듈(30)
선택모듈(30)은 프리셋 계수 테이블로부터 상기 계수 임계치보다 작은 인코딩 계수를 선택하기 위한 것이다.
본 실시예에서, 상기 프리셋 계수 테이블은 미리 설정할 수 있으며, 이는 1이 연속되는 상이한 갯수를 근거로 대응되는 계수 임계치를 미리 계산한 다음, 이러한 계수 임계치를 계수치로 삼아 작은 수에서 큰 수로 또는 큰 수에서 작은 수로의 순서로 프리셋 계수 테이블에 저장할 수 있다. 이와 같이 하면, 인코딩 계수를 선택하여야 할 때, 먼저 프리셋 계수 테이블로부터 현재의 계수 임계치보다 작은 계수치를 선택할 수 있으며, 선택된 계수치가 단일한 경우, 직접 인코딩 계수로 삼을 수 있고, 선택된 계수치가 다수인 경우, 랜덤 또는 기타 설정방식을 통해 다수로부터 하나를 선택하여 인코딩 계수로 삼을 수 있다.
(4) 제2 확정모듈(40)
제2 확정모듈(40)은 상기 구간 길이와 인코딩 계수를 근거로 상기 제1 프리셋 문자에 대응하는 제1 인코딩 구간, 및 제2 프리셋 문자에 대응하는 제2 인코딩 구간을 결정하기 위한 것이다.
본 실시예에서, 먼저 공식 R'0=R0*α0을 통해 구간 길이를 초기화시킬 수 있다. 여기서, R'0는 초기화 후의 구간 길이이고, R0는 미리 설정된 구간 길이이며, α0는 인코딩 계수이다. 예를 들어 α0가 1.1이고, R0가 100000000000이라면, 즉 초기화 후의 구간 길이 R'0는 110000000000이며, 이때, 초기화 구간은 [0, 110000000000]일 수 있다. 이후, 상기 초기화 구간을 분할하여, 비교적 작은 제1 인코딩 구간과 제2 인코딩 구간을 획득한다. 통상적으로, 2진 문자열의 경우, 그 분할 방식은 등분일 수 있으며, 다시 말해 상기 제1 인코딩 구간 U'0=[0,54999999999]이고, 상기 제2 인코딩 구간 U'1=[55000000000, 110000000000]이며, 또한 U'0는 문자 0에 대응하는 구간이고, U'1은 문자 1에 대응하는 구간이다. 여기서, U'0과 U'1의 구간길이는 R'0/2이다.
(5) 인코딩 모듈(50)
인코딩 모듈(50)은 상기 구간 길이, 인코딩 계수, 제1 인코딩 구간과 제2 인코딩 구간을 이용하여 상기 인코딩할 문자열에 대해 인코딩을 수행하여 인코딩값을 획득하기 위한 것이다.
예를 들어, 도 3b를 참조하면, 상기 인코딩 모듈(50)은 구체적으로
현재 인코딩할 문자, 현재의 인코딩 계수, 현재의 제1 인코딩 구간, 현재의 제2 인코딩 구간과 현재의 구간 길이를 획득하기 위한 제1 획득 서브모듈(51)을 포함할 수 있다.
본 실시예에서, 상기 인코딩 계수 αn은 끊임없이 변하는 것일 수도 있고, 하나의 고정값일 수도 있다. 고정값인 경우, 이는 α0일 수 있고, 비고정값인 경우, K(αn)=αn-αn-1을 통할 수 있으며, 여기서 K(αn )은 하나의 지정된 정성함수, 예를 들어 더하기, 곱하기, 로직(중요하거나 또는 중요하지 않은) 등일 수 있다. 상기 인코딩할 문자 Sn, 제1 인코딩 구간 U'0(n), 제2 인코딩 구간 U'1(n)과 구간 길이 R'n은 끊임없이 변하는 것으로서, 하나의 문자의 인코딩이 완료될 때마다 한 번씩 업데이트되며, 또한 처음 인코딩되는 경우, 상기 인코딩할 문자는 통상적으로 상기 인코딩할 문자열의 시작 문자로서, 이때, 상기 인코딩 계수는 α0이고, 상기 제1 인코딩 구간은 U'0(0)이며, 상기 제2 인코딩 구간은 U'1(0)이고, 상기 구간 길이(즉 U'0(0)와 U'1(0)의 총 길이)는 R'0이다.
확정 서브모듈(52)은 현재 인코딩할 문자를 근거로 현재의 제1 인코딩 구간과 현재의 제2 인코딩 구간으로부터 목표 구간을 확정하기 위한 것이다.
예를 들어, 확정 서브모듈(52)은 구체적으로
현재 인코딩할 문자가 상기 제1 프리셋 문자인지 여부를 판단하여;
'예'인 경우, 현재의 제1 인코딩 구간을 목표 구간으로 확정하고;
'아니오'인 경우, 현재의 제2 인코딩 구간을 목표 구간으로 확정하기 위한 것일 수 있다.
본 실시예에서, 인코딩 과정 중, 현재 인코딩할 문자 Sn에 대응되는 인코딩 구간을 찾아야 하며, 예를 들어 현재 인코딩할 문자 Sn이 0이라면, 즉 확정 서브모듈(52)이 확정한 목표 구간은 U'0이고, 현재 인코딩할 문자 Sn이 1이라면, 확정 서브모듈(52)이 확정한 목표 구간은 U'1이다.
업데이트 서브모듈(53)은 현재의 구간 길이, 현재의 인코딩 계수와 목표 구간을 근거로 현재의 제1 인코딩 구간과 현재의 제2 인코딩 구간을 업데이트함으로써, 현재 인코딩할 문자에 대해 인코딩을 수행하기 위한 것이다.
예를 들어, 상기 업데이트 서브모듈(53)은 구체적으로
1-1: 현재의 구간 길이와 현재의 인코딩 계수를 근거로 다음 구간 길이를 계산하기 위한 것일 수 있다.
본 실시예에서, 이며, n∈[1, Len]이이다. Len은 인코딩할 문자열의 총 길이이고, Ls는 인코딩할 문자열 중 부호 유형의 갯수이다. 예를 들어 2진 문자열의 경우, 그 부호는 0과 1만 포함되므로, Ls는 2이며, 이때, 등등이다.
1-2: 히스토리 인코딩 문자를 획득하고, 상기 히스토리 인코딩 문자와 현재 인코딩할 문자 중, 상기 제1 프리셋 문자와 제2 프리셋 문자의 비교값을 계산하기 위한 것일 수 있다.
본 실시예에서, 적응형 확률 통계 모델을 통해 동적 비교값 fk를 계산할 수 있다. 다시 말해 히스토리 인코딩 문자와 현재 인코딩할 문자 중 제1 프리셋 문자와 제2 프리셋 문자의 비를 즉시 계산할 수 있으며, fk≠fk -1이며, 예를 들어, 부호 서열이 1010000110010101000100010인 경우에 대하여, 현재의 인코딩 문자가 3번째 문자인 경우, 즉 상기 비교값은 1/2이다.
물론, 정적 통계 모델을 통해 정적 비교값 fk를 계산할 수도 있다. 다시 말해 직접 상기 비교값을 정적값(예를 들어 fk=1)으로 정의할 수 있으며, fk = fk -1이다.
1-3. 상기 비교값, 다음 구간 길이와 목표 구간 길이의 최소 종단점값을 근거로 현재의 제1 인코딩 구간과 현재의 제2 인코딩 구간에 대해 업데이트를 수행하기 위한 것일 수 있다.
예를 들어, 상기 단계 1-3은 구체적으로
상기 다음 구간 길이와 최소 종단점값을 근거로 구간 상한치을 계산하는 단계;
상기 비교값을 이용하여 상기 최소 종단점값과 구간 상한치 사이의 구간을 분할하여 2개의 서브구간을 획득하는 단계;
분할 후의 비교적 작은 서브구간을 이용하여 현재의 제1 인코딩 구간을 업데이트하고, 분할 후의 비교적 큰 서브구간을 이용하여 현재의 제2 인코딩 구간을 업데이트하는 단계를 포함할 수 있다.
본 실시예에서, 구간 상한치 H'n=L'n -1+R'n이며, L'n -1은 목표 구간의 최소 종단점이고, 적응형 확률 통계 모델에서, U'0(n)=[L'n -1, L'n -1+(fk/(fk+1))*R'n-1], U'1(n)=[L'n-1+(fk/(fk+1))*R'n, H'n]이다. 정적 확률 통계 모델에서, U'0(n)=[L'n -1, L'n-1+R'n/2-1], U'1(n)=[L'n-1+R'n/2, H'n]이다.
반복 모듈(54)은 인코딩 완료 시, 업데이트 후의 제1 인코딩 구간과 업데이트 후의 제2 인코딩 구간을 현재의 제1 인코딩 구간과 현재의 제2 인코딩 구간으로 삼고, 다음 인코딩할 문자를 현재의 인코딩할 문자로 삼아, 현재 인코딩할 문자, 현재의 인코딩 계수, 현재의 제1 인코딩 구간, 현재의 제2 인코딩 구간과 현재의 구간 길이를 획득하는 조작을 모든 인코딩할 문자의 인코딩이 완료될 때까지 반복 실행하기 위한 것이다.
본 실시예에서, n=Len일 때, 모든 인코딩할 문자열의 인코딩이 완료되며, 이때, U'1(n)과 U'0(n)을 획득할 수 있다.
물론, 모든 인코딩할 문자의 인코딩 조작에 대하여, 인코딩 과정은 동일하며, 다시 말해 상기 인코딩할 문자열의 인코딩 과정은 끊임 없이 순환하는 과정이다. 순환이 정상적으로 진행될 수 있도록 하기 위하여, 매 회 순환과 관련하여 인코딩 계수와 구간 길이는 부단히 업데이트되어야 하며, 다시 말해 상기 반복 모듈(54)은 또한
인코딩 완료 시, 상기 히스토리 인코딩 문자의 갯수를 통계내고;
히스토리 인코딩 문자의 갯수와 현재의 인코딩 계수를 근거로 다음 인코딩 계수를 계산하며;
다음 인코딩 계수를 현재의 인코딩 계수로 삼고, 다음 구간 길이를 현재의 구간 길이로 삼기 위한 것일 수 있다.
본 실시예에서, 상기 인코딩 계수 αn은 정적값, 예를 들어 αn=α0일 수도 있고, 동적값일 수도 있으며, 동적값일 경우, K(αn )=αn-αn -1이다. 여기서 n-1은 히스토리 인코딩 문자의 갯수이며, 이번 인코딩 조작이 완료되었을 때, 다음번 인코딩 조작에 대하여, 인코딩 계수는 αn이고, 구간 길이는 R'n이다.
이밖에, 모든 인코딩할 문자의 인코딩이 완료되었을 때 획득된 것은 U'1(n)과 U'0(n)이고, 상기 인코딩할 문자열의 인코딩값은 U'1(n)과 U'0(n) 중의 어느 하나의 값일 수 있기 때문에, 도 3c를 참조하면, 상기 인코딩 모듈(50)은 또한
모든 인코딩할 문자의 인코딩이 완료되었을 때, 현재의 제2 인코딩 구간의 2개의 종단점값을 획득하기 위한 제2 획득 서브모듈(55);
상기 2개의 종단점값 상호 간의 현재 가장 높은 자리의 숫자가 동일한지 여부를 판단하기 위한 판단 서브모듈(56);
판단 결과가 '예'를 지시하는 경우, 상기 동일한 숫자를 목표 숫자로 삼아 출력하고, 상기 가장 높은 자리와 이웃한 다음 자리를 현재의 가장 높은 자리로 삼은 후, 현재의 제2 인코딩 구간의 2개의 종단점값을 획득하는 단계를 판단 결과가 '아니오'를 지시할 때까지 반복 실행하기 위한 출력 서브모듈(57);
출력 순서에 따라 상기 목표 숫자를 정렬(sorting)하여 인코딩값을 획득하기 위한 정렬(sorting) 서브모듈(58)을 더 포함할 수 있다.
본 실시예에서, U'1(n)=[73042919870,73042952160]이라면, 즉 인코딩값 V는 730429이다.
(6) 생성모듈(60)
생성모듈(60)은 상기 인코딩값을 근거로 인코딩 결과를 생성하고, 상기 인코딩 결과를 출력하기 위한 것이다.
예를 들어, 상기 생성모듈(60)은 구체적으로
상기 인코딩할 문자열 중 문자의 총 수량, 및 제2 프리셋 문자의 제2 수량을 통계내고;
상기 인코딩값, 제2 수량과 총 수량을 상기 인코딩할 문자열의 인코딩 결과로 삼기 위한 것일 수 있다.
본 실시예에서, 인코딩할 문자열이 1010000110010101000100010라면, 즉 총 수량 Len은 25이고, 제2 수량 Count는 9이며, 인코딩 결과는 V, Count, Len이다.
이밖에, 인코딩 결과를 출력한 후, 디코딩 조작이 더 이루어지며, 다시 말해, 상기 데이터 인코딩 장치는 디코딩 모듈을 더 포함할 수 있으며, 이는
인코딩 결과가 출력된 후, 상기 인코딩 결과를 지닌 디코딩 요청을 획득하고;
상기 디코딩 요청을 근거로 기준 문자열을 생성하며, 상기 기준 문자열에는 제1 수량의 제1 프리셋 문자, 및 제2 수량의 제2 프리셋 문자가 포함되고, 상기 제1 수량은 상기 총 수량과 제2 수량의 차이며, 상기 기준 문자열의 가장 높은 자리의 문자는 상기 제2 프리셋 문자이며,
상기 기준 문자열을 근거로 상기 인코딩값에 대하여 디코딩을 수행하기 위한 것이다.
2-1: 상기 인코딩 결과를 지닌 디코딩 요청을 획득하고;
2-2: 상기 디코딩 요청을 근거로 기준 문자열을 생성하며, 상기 기준 문자열은 제1 수량의 제1 프리셋 문자, 및 제2 수량의 제2 프리셋 문자를 포함하고, 상기 제1 수량은 상기 총 수량과 제2 수량의 차이며, 상기 기준 문자열의 가장 높은 자리 문자는 상기 제2 프리셋 문자이다.
본 실시예에서, Count=9,Len=25인 경우, 즉 제1 수량은 16이고, 상기 기준 문자열의 길이 역시 25개의 문자이며, 또한 시작 문자는 1이고, 끝 문자는 전부 1이다. 다시 말해 상기 기준 문자열의 초기 서열은 1000000000000000011111111이다.
2-3. 상기 기준 문자열을 근거로 상기 인코딩값에 대해 디코딩을 수행한다.
예를 들어, 상기 디코딩 모듈은 또한
현재의 기준 문자열에 대해 인코딩을 수행하여 기준 인코딩값을 획득하고;
상기 기준 인코딩값과 인코딩값을 근거로 디코딩 문자를 확정하고, 상기 디코딩 문자를 근거로 현재의 기준 문자열 중 문자의 배열 조합을 업데이트하며;
업데이트 후의 기준 문자열을 현재의 기준 문자열로 삼고, 현재의 기준 문자열에 대해 인코딩을 수행하는 단계를 인코딩 횟수의 누계값이 상기 총 수량과 같아질 때까지 반복 실행하고;
모든 디코딩 문자를 근거로 디코딩 결과를 생성하기 위한 것일 수 있다.
본 실시예에서, 매 기준 문자열마다, 모두 상기 인코딩 방법에 따라 기준 문자열 중의 모든 문자에 대해 인코딩을 수행할 수 있으며, 미리 설정된 구간 길이 역시 R0이고, 초기 인코딩 계수 역시 α0이며, 기준 문자열 중의 모든 문자가 모두 인코딩이 완료되었을 때, 최종적으로 문자 0에 대응하는 제1 인코딩 구간 D'0과 문자 1에 대응하는 제2 인코딩 구간 D'1을 획득하며, 다른 점은, 상기 기준 문자열의 인코딩값(즉 기준 인코딩값)은 결코 높은 자리와 동일한 수치가 아니라, 먼저 직접 D'0의 최소 종단점값을 취하여 Tn으로 삼은 다음 지정함수 tn=Tny(n)를 근거로 기준 인코딩값 tn을 계산한다는데 있으며, 그 중 함수 y(n)은 테스트를 통해 얻어진 것이고, αn과 관련이 있다. 이후, 기준 인코딩값 tn과 인코딩값 V를 근거로 디코딩 문자를 확정하며, 상기 디코딩 문자는 주로 1과 0을 포함한다. 인코딩 횟수가 Len에 도달했을 때, 모든 디코딩 문자를 확정된 순서대로 배열할 수 있으며, 최종적으로 획득되는 문자 서열이 즉 디코딩 결과이다.
설명해두어야 할 점으로, 상기 현재의 기준 문자열은 끊임없이 변하는 것이며, 매 회 변화는 이전 기준 문자열 및 그 기준 인코딩값 tn에 의해 정해진다. 다시 말해 이전 기준 문자열 및 그 기준 인코딩값 tn을 근거로 현재의 기준 문자열 중 문자 1과 0의 배열 위치를 재조정한다. 상기 조정은 주로 문자 1의 이동과 관련되며, 예를 들어 이전 기준 문자열이 1100000000000000001111111이라면, 디코딩 문자가 1일 때, 1100000000000000001111111중 말미부의 가장 높은 자리의 문자 1을 전단부의 가장 낮은 위치의 문자 1의 뒤로 이동시켜, 1110000000000000000111111(즉 업데이트 후의 기준 문자열)을 획득하여야 하고, 디코딩 문자가 0일 때, 1100000000000000001111111중 전단부의 가장 낮은 자리의 문자 1을 한 자리 뒤로 이동시켜, 1010000000000000001111111(즉 업데이트 후의 기준 문자열)을 획득하여야 한다.
또한, 상기 디코딩 모듈은
상기 인코딩값의 말미부에 제1 프리셋 문자를 보충하여, 상기 인코딩값과 기준 인코딩값이 동일한 수량의 문자를 갖도록 하고;
보충 후의 인코딩값이 기준 인코딩값보다 작은지 여부를 판단하여;
'예'인 경우, 제2 프리셋 문자를 디코딩 문자로 확정하고;
'아니오'인 경우, 제1 프리셋 문자를 디코딩 문자로 확정하기 위한 것일 수 있다.
본 실시예에서, V=730429일 때, n번째 인코딩 조작에 대하여, 기준 인코딩값이 tn=85252570554라면, 즉 V에 0을 보충한 후 V'=73042900000가 될 수 있으며, 이때, tn>V'이고, 획득되는 디코딩 문자는 0이다. 기준 인코딩값이 tn= 55004691494라면, 이때, tn≤V'이며, 획득되는 디코딩 문자는 1이다.
구체적으로 실시 시, 이상의 각 유닛은 독립적인 실체로서 구현될 수도 있고, 임의의 조합을 실시하여, 동일하거나 약간의 실체로서 구현할 수도 있으며, 이상의 각 유닛의 구체적인 실시는 앞에서 설명한 방법의 실시예를 참조하면 되므로, 여기서는 중복 설명을 생략한다.
이상으로 알 수 있듯이, 본 실시예가 제공하는 데이터 인코딩 장치는, 획득모듈(10)을 통해 다수의 제1 프리셋 문자와 제2 프리셋 문자가 포함된 인코딩할 문자열, 및 미리 설정된 구간의 길이를 획득하고, 제1 확정모듈(20)은 상기 제2 프리셋 문자가 인코딩할 문자열에 연속적으로 출현하는 최대 횟수를 근거로 계수 임계치를 확정하며, 이후, 선택모듈(30)이 프리셋 계수 테이블로부터 상기 계수 임계치보다 작은 인코딩 계수를 선택하고, 제2 확정모듈(40)이 상기 구간 길이와 인코딩 계수를 근거로 상기 제1 프리셋 문자에 대응하는 제1 인코딩 구간, 및 제2 프리셋 문자에 대응하는 제2 인코딩 구간을 확정하며, 이후, 인코딩 모듈(50)은 상기 구간 길이, 인코딩 계수, 제1 인코딩 구간과 제2 인코딩 구간을 이용하여 상기 인코딩할 문자열에 대해 인코딩을 수행하여 인코딩값을 획득하고, 생성모듈(60)은 상기 인코딩값을 근거로 인코딩 결과를 생성하여, 상기 인코딩 결과를 출력한다. 따라서 2진 데이터의 무손실 압축을 비교적 양호하게 구현할 수 있으며, 압축 능력이 강화되고, 압축 효과가 우수하다.
상응하게, 본 발명의 실시예는 일종의 전자장치를 더 제공하며, 도 4에 도시된 바와 같이, 이는 본 발명의 실시예와 관련된 전자장치의 구조도로서, 구체적으로 설명하면 다음과 같다.
상기 전자장치는 하나 또는 하나 이상의 프로세싱 코어를 갖는 프로세서(701), 하나 또는 하나 이상의 컴퓨터 가독 저장매체인 메모리(702), 전원(703) 및 입력유닛(704) 등 부재를 포함할 수 있다. 본 분야의 기술자라면, 도 4에 도시된 전자장치의 구조는 결코 전자장치를 한정하는 것이 아니며, 도면보다 더욱 많거나 또는 적은 부재를 포함하거나, 또는 약간의 부재를 조합하거나, 또는 상이한 부재를 배치할 수도 있음을 이해할 수 있을 것이다. 그 중,
프로세서(701)는 상기 전자장치의 제어 센터로서, 각종 인터페이스 및 배선을 이용하여 전반적인 전자장치의 각 부분에 연결되며, 메모리(702) 내에 저장된 소프트웨어 프로그램 및/또는 모듈의 운행 또는 실행, 및 메모리(702) 내에 저장된 데이터의 호출을 통해, 전자장치의 각종 기능과 처리 데이터를 실행함으로써, 전자장치에 대한 전체적인 모니터링을 수행한다. 선택적으로, 프로세서(701)는 하나 또는 다수의 프로세싱 코어를 포함할 수 있으며, 바람직하게는, 프로세서(701)는 애플리케이션 프로세서 및 모뎀 프로세서를 집적할 수 있다. 그 중 애플리케이션 프로세서는 주로 운영 시스템, 사용자 인터페이스와 애플리케이션 프로그램 등을 처리하고, 모뎀 프로세서는 주로 무선통신을 처리한다. 상기 모뎀 프로세서는 프로세서(701)에 집적되지 않을 수도 있음을 이해할 수 있을 것이다.
메모리(702)는 소프트웨어 프로그램 및 모듈을 저장하기 위한 것이며, 프로세서(701)는 메모리(702)에 저장된 소프트웨어 프로그램 및 모듈의 운행을 통해, 각종 기능의 애플리케이션 및 데이터 처리를 실행한다. 메모리(702)는 주로 프로그램 저장영역과 데이터 저장영역을 포함하며, 그 중 프로그램 저장영역은 운영 시스템, 적어도 하나의 기능에 필요한 애플리케이션 프로그램(예를 들어 음성 재생 기능, 이미지 재생 기능 등) 등을 저장할 수 있고; 데이터 저장영역은 전자장치의 사용에 따라 구축된 데이터 등을 저장한다. 이밖에, 메모리(702)는 고속 랜덤 액세스 메모리를 포함할 수 있고, 적어도 하나의 자기디스크 메모리 소자, 플래시 메모리 소자와 같은 비휘발성 메모리, 또는 기타 휘발성 고체 메모리 소자를 포함할 수도 있다. 상응하게, 메모리(702)는 프로세서(701)가 메모리(702)를 방문하도록 제공되는 메모리 컨트롤러를 더 포함할 수 있다.
전자장치는 각 부재로 전기를 공급하는 전원(703)을 더 포함하며, 바람직하게는, 전원(703)은 전원 관리 시스템을 통해 프로세서(701)와 논리적으로 연결됨으로써, 전원 관리 시스템을 통해 충전, 방전의 관리 및 전력 소모 관리 등 기능을 구현할 수 있다. 전원(703)은 하나 또는 하나 이상의 직류 또는 교류 전원, 재충전 시스템, 전원 고장 검출회로, 전원 어댑터 또는 인버터, 전원상태 지시기 등 임의의 어셈블리를 더 포함할 수 있다.
상기 전자장치는 입력유닛(704)을 더 포함할 수 있으며, 상기 입력유닛(704)은 입력되는 숫자 또는 문자 정보를 수신하고, 사용자 설정 및 기능 제어와 관련된 키보드, 마우스, 조이스틱, 광학 또는 트랙볼 신호의 입력을 발생시키기 위한 것일 수 있다.
비록 도시하지는 않았으나, 전자장치는 디스플레이유닛 등을 더 포함할 수 있으며, 여기서는 설명을 생략한다. 구체적으로 본 실시예에서, 전자장치 중의 프로세서(701)는 이하 명령에 따라, 하나 또는 하나 이상의 애플리케이션 프로그램의 진행 과정에 대응하는 실행 가능한 파일을 메모리(702)에 로드하고, 프로세서(701)를 통해 메모리(702)에 저장된 애플리케이션 프로그램을 실행시킴으로써, 다음과 같은 각종 기능을 구현할 수 있다.
다수의 제1 프리셋 문자와 제2 프리셋 문자가 포함된 인코딩할 문자열, 및 미리 설정된 구간의 길이를 획득하는 기능;
상기 제2 프리셋 문자가 인코딩할 문자열에서 연속적으로 출현하는 최대 횟수를 근거로 계수 임계치를 확정하는 기능;
프리셋 계수 테이블로부터 상기 계수 임계치보다 작은 인코딩 계수를 선택하는 기능;
상기 구간의 길이와 인코딩 계수를 근거로 상기 제1 프리셋 문자에 대응하는 제1 인코딩 구간, 및 제2 프리셋 문자에 대응하는 제2 인코딩 구간을 확정하는 기능;
상기 구간의 길이, 인코딩 계수, 제1 인코딩 구간 및 제2 인코딩 구간을 이용하여 상기 인코딩할 문자열에 대해 인코딩을 수행하여 인코딩값을 획득하는 기능;
상기 인코딩값을 근거로 인코딩 결과를 생성하고 상기 인코딩 결과를 출력하는 기능을 구현한다.
상기 전자장치는 본 발명의 실시예가 제공하는 어느 하나의 데이터 인코딩 장치가 구현할 수 있는 유효한 효과를 구현할 수 있으며, 상세한 내용은 앞에서 설명한 실시예를 참조하면 되므로, 여기서는 중복 설명을 생략한다.
당업자라면, 상기 실시예의 각종 방법 중의 전체 또는 일부 단계는 명령을 통해 완성되거나, 또는 명령 제어와 관련된 하드웨어를 통해 완성될 수 있으며, 상기 명령은 컴퓨터 가독 저장매체에 저장될 수 있고, 프로세서에 의해 로딩 및 실행될 수 있음을 이해할 수 있을 것이다.
이를 위해, 본 발명의 실시예는 다수의 명령이 저장되는 저장매체를 제공하며, 상기 명령은 본 발명의 실시예가 제공하는 어느 하나의 데이터 인코딩 방법 중의 단계를 실행하도록 프로세서에 의해 로드될 수 있다.
그 중, 상기 저장매체는 리드 온리 메모리(ROM, Read Only Memory), 랜덤 액세스 메모리(RAM, Random Access Memory), 자기 디스크 또는 광디스크 등을 포함할 수 있다.
상기 저장매체에 저장된 명령으로 본 발명의 실시예가 제공하는 어느 하나의 데이터 인코딩 방법 중의 단계를 실행할 수 있기 때문에, 본 발명의 실시예가 제공하는 어느 하나의 데이터 인코딩 방법으로 구현될 수 있는 유익한 효과를 구현할 수 있으며, 상세한 내용은 앞에서 설명한 실시예를 참조하면 되므로, 여기서는 중복 설명을 생략한다.
이상의 각 조작의 구체적인 실시는 앞에서 설명한 실시예를 참조하면 되므로, 여기서는 중복 설명을 생략한다.
이상으로 본 발명의 실시예가 제공하는 데이터 인코딩 방법, 장치, 저장매체 및 전자장치에 대해 상세히 소개하였으며, 본문 중 구체적인 예를 응용하여 본 발명의 원리 및 실시방식을 설명하였다. 이상의 실시예의 설명은 단지 본 발명의 방법 및 그 핵심 사상의 이해를 돕기 위한 것일 뿐이고; 이와 동시에, 당업자에게 있어서, 본 발명의 사상에 의거하여, 구체적인 실시방식 및 응용 범위 면에서 모두 변경되는 부분이 있을 수 있으며, 결론적으로, 본 명세서의 내용은 본 발명을 제한하는 것으로 이해되어서는 안 된다.
Claims (14)
- 데이터 인코딩 방법에 있어서,
다수의 제1 프리셋 문자와 제2 프리셋 문자가 포함된 인코딩할 문자열, 및 미리 설정된 구간의 길이를 획득하는 단계;
상기 제2 프리셋 문자가 인코딩할 문자열에서 연속적으로 출현하는 최대 횟수를 근거로 계수 임계치를 확정하는 단계;
프리셋 계수 테이블로부터 상기 계수 임계치보다 작은 인코딩 계수를 선택하는 단계;
상기 구간의 길이와 인코딩 계수를 근거로 상기 제1 프리셋 문자에 대응하는 제1 인코딩 구간, 및 제2 프리셋 문자에 대응하는 제2 인코딩 구간을 확정하는 단계;
상기 구간 길이, 인코딩 계수, 제1 인코딩 구간 및 제2 인코딩 구간을 이용하여 상기 인코딩할 문자열에 대해 인코딩을 수행하여, 인코딩값을 획득하는 단계;
상기 인코딩값을 근거로 인코딩 결과를 생성하고 상기 인코딩 결과를 출력하는 단계를 포함하는 데이터 인코딩 방법. - 제1항에 있어서, 상기 구간 길이, 인코딩 계수, 제1 인코딩 구간과 제2 인코딩 구간을 이용하여 상기 인코딩할 문자열에 대해 인코딩을 수행하는 단계는
현재 인코딩할 문자, 현재의 인코딩 계수, 현재의 제1 인코딩 구간, 현재의 제2 인코딩 구간과 현재의 구간 길이를 획득하는 단계;
현재 인코딩할 문자를 근거로 현재의 제1 인코딩 구간과 현재의 제2 인코딩 구간으로부터 목표 구간을 확정하는 단계;
현재의 구간 길이, 현재의 인코딩 계수와 목표 구간을 근거로 현재의 제1 인코딩 구간과 현재의 제2 인코딩 구간을 업데이트하여, 현재 인코딩할 문자에 대해 인코딩을 수행하는 단계;
인코딩 완료 시, 업데이트 후의 제1 인코딩 구간과 업데이트 후의 제2 인코딩 구간을 현재의 제1 인코딩 구간과 현재의 제2 인코딩 구간으로 삼고, 다음 인코딩할 문자를 현재의 인코딩할 문자로 삼아, 현재의 인코딩 문자, 현재의 인코딩 계수, 현재의 제1 인코딩 구간, 현재의 제2 인코딩 구간과 현재의 구간 길이를 획득하는 조작을 모든 인코딩할 문자의 인코딩이 완료될 때까지 반복 실행하는 단계를 포함하는 데이터 인코딩 방법. - 제2항에 있어서, 상기 현재 인코딩할 문자를 근거로 현재의 제1 인코딩 구간과 현재의 제2 인코딩 구간으로부터 목표 구간을 확정하는 단계는
현재 인코딩할 문자가 상기 제1 프리셋 문자인지 여부를 판단하는 단계;
'예'인 경우, 현재의 제1 인코딩 구간을 목표 구간으로 확정하는 단계;
'아니오'인 경우, 현재의 제2 인코딩 구간을 목표 구간으로 확정하는 단계를 포함하는 데이터 인코딩 방법. - 제2항에 있어서, 현재의 구간 길이, 현재의 인코딩 계수와 목표 구간을 근거로 현재의 제1 인코딩 구간과 현재의 제2 인코딩 구간을 업데이트하는 단계는
현재의 구간 길이와 현재의 인코딩 계수를 근거로 다음 구간 길이를 계산하는 단계;
히스토리 인코딩 문자를 획득하고, 상기 히스토리 인코딩 문자와 현재 인코딩할 문자 중, 상기 제1 프리셋 문자와 제2 프리셋 문자의 비교값을 계산하는 단계;
상기 비교값, 다음 구간 길이와 목표 구간 길이의 최소 종단점값을 근거로 현재의 제1 인코딩 구간과 현재의 제2 인코딩 구간에 대해 업데이트를 수행하는 단계를 포함하는 데이터 인코딩 방법. - 제4항에 있어서, 상기 비교값, 다음 구간 길이와 목표 구간 길이의 최소 종단점값을 근거로 현재의 제1 인코딩 구간과 현재의 제2 인코딩 구간에 대해 업데이트를 수행하는 단계는
상기 다음 구간 길이와 최소 종단점값을 근거로 구간 상한치을 계산하는 단계;
상기 비교값을 이용하여 상기 최소 종단점값과 구간 상한치 사이의 구간을 분할하여 2개의 서브구간을 획득하는 단계;
분할 후의 비교적 작은 서브구간을 이용하여 현재의 제1 인코딩 구간을 업데이트하고, 분할 후의 비교적 큰 서브구간을 이용하여 현재의 제2 인코딩 구간을 업데이트하는 단계를 포함하는 데이터 인코딩 방법. - 제4항에 있어서, 인코딩 완료 시,
상기 히스토리 인코딩 문자의 갯수를 통계내는 단계;
히스토리 인코딩 문자의 갯수와 현재의 인코딩 계수를 근거로 다음 인코딩 계수를 계산하는 단계;
다음 인코딩 계수를 현재의 인코딩 계수로 삼고, 다음 구간 길이를 현재의 구간 길이로 삼는 단계를 더 포함하는 데이터 인코딩 방법. - 제2항에 있어서, 상기 구간 길이, 인코딩 계수, 제1 인코딩 구간 및 제2 인코딩 구간을 이용하여 상기 인코딩할 문자열에 대해 인코딩을 수행하여, 인코딩값을 획득하는 단계는
모든 인코딩할 문자의 인코딩이 완료되었을 때, 현재의 제2 인코딩 구간의 2개의 종단점값을 획득하는 단계;
상기 2개의 종단점값 상호 간의 현재 가장 높은 자리의 숫자가 동일한지 여부를 판단하는 단계;
판단 결과가 '예'를 지시하는 경우, 상기 동일한 숫자를 목표 숫자로 삼아 출력하고, 상기 가장 높은 자리와 이웃한 다음 자리를 현재의 가장 높은 자리로 삼은 후, 현재의 제2 인코딩 구간의 2개의 종단점값을 획득하는 단계를 판단 결과가 '아니오'를 지시할 때까지 반복 실행하는 단계;
출력 순서에 따라 상기 목표 숫자를 정렬하여 인코딩값을 획득하는 단계를 더 포함하는 데이터 인코딩 방법. - 제1항에 있어서, 상기 인코딩값을 근거로 인코딩 결과를 생성하는 단계는
상기 인코딩할 문자열 중 문자의 총 수량, 및 제2 프리셋 문자의 제2 수량을 통계내는 단계;
상기 인코딩값, 제2 수량과 총 수량을 상기 인코딩할 문자열의 인코딩 결과로 삼는 단계를 포함하는 데이터 인코딩 방법. - 제1항에 있어서, 인코딩 결과를 출력한 후,
상기 인코딩 결과를 지니는 디코딩 요청을 획득하는 단계;
상기 디코딩 요청을 근거로 기준 문자열을 생성하는 단계, 상기 기준 문자열은 제1 수량의 제1 프리셋 문자, 및 제2 수량의 제2 프리셋 문자를 포함하고, 상기 제1 수량은 상기 총 수량과 제2 수량의 차이며, 상기 기준 문자열의 가장 높은 자리 문자는 상기 제2 프리셋 문자이며;
상기 기준 문자열을 근거로 상기 인코딩값에 대해 디코딩을 수행하는 단계를 더 포함하는 데이터 인코딩 방법. - 제9항에 있어서, 상기 기준 문자열을 근거로 상기 인코딩값에 대해 디코딩을 수행하는 단계는
현재의 기준 문자열에 대해 인코딩을 수행하여 기준 인코딩값을 획득하는 단계;
상기 기준 인코딩값과 인코딩값을 근거로 디코딩 문자를 확정하고, 상기 디코딩 문자를 근거로 현재의 기준 문자열 중 문자의 배열 조합을 업데이트하는 단계;
업데이트 후의 기준 문자열을 현재의 기준 문자열로 삼고, 현재의 기준 문자열에 대해 인코딩을 수행하는 단계를 인코딩 횟수의 누계값이 상기 총 수량과 같아질 때까지 반복 실행하는 단계;
모든 디코딩 문자를 근거로 디코딩 결과를 생성하는 단계를 포함하는 데이터 인코딩 방법. - 제10항에 있어서, 상기 기준 인코딩값과 인코딩값을 근거로 디코딩 문자를 확정하는 단계는
상기 인코딩값의 말미부에 제1 프리셋 문자를 보충하여, 상기 인코딩값과 기준 인코딩값이 동일한 수량의 문자를 갖도록 하는 단계;
보충 후의 인코딩값이 기준 인코딩값보다 작은지 여부를 판단하는 단계;
'예'인 경우, 제2 프리셋 문자를 디코딩 문자로 확정하는 단계;
'아니오'인 경우, 제1 프리셋 문자를 디코딩 문자로 확정하는 단계를 포함하는 데이터 인코딩 방법. - 데이터 인코딩 장치에 있어서,
다수의 제1 프리셋 문자와 제2 프리셋 문자가 포함된 인코딩할 문자열, 및 미리 설정된 구간의 길이를 획득하기 위한 획득모듈;
상기 제2 프리셋 문자가 인코딩할 문자열에서 연속적으로 출현하는 최대 횟수에 따라 계수 임계치를 확정하기 위한 제1 확정모듈;
프리셋 계수 테이블로부터 상기 계수 임계치보다 작은 인코딩 계수를 선택하기 위한 선택모듈;
상기 구간의 길이와 인코딩 계수에 따라 상기 제1 프리셋 문자에 대응하는 제1 인코딩 구간, 및 제2 프리셋 문자에 대응하는 제2 인코딩 구간을 확정하기 위한 제2 확정모듈;
상기 구간의 길이, 인코딩 계수, 제1 인코딩 구간 및 제2 인코딩 구간을 이용하여 상기 인코딩할 문자열을 인코딩하여 인코딩값을 획득하는 인코딩 모듈;
상기 인코딩값에 따라 인코딩 결과를 생성하고 상기 인코딩 결과를 출력하기 위한 생성모듈을 포함하는 데이터 인코딩 장치. - 제12항에 있어서, 상기 인코딩 모듈은 구체적으로
현재 인코딩할 문자, 현재의 인코딩 계수, 현재의 제1 인코딩 구간, 현재의 제2 인코딩 구간 및 현재의 구간 길이를 획득하기 위한 제1 획득 서브모듈;
현재의 인코딩할 문자에 따라 현재의 제1 인코딩 구간과 현재의 제2 인코딩 구간으로부터 목표 구간을 확정하기 위한 확정 서브모듈;
현재의 구간 길이, 현재의 인코딩 계수 및 목표 구간을 근거로 현재의 제1 인코딩 구간과 현재의 제2 인코딩 구간을 업데이트하여, 현재의 인코딩할 부호에 대해 인코딩을 수행하기 위한 업데이트 서브모듈;
인코딩 완료 시, 업데이트 후의 제1 인코딩 구간과 업데이트 후의 제2 인코딩 구간을 현재의 제1 인코딩 구간과 현재의 제2 인코딩 구간으로 삼고, 다음 인코딩할 문자를 현재의 인코딩할 문자로 삼아, 모든 인코딩할 문자의 인코딩이 완료될 때까지 현재의 인코딩할 부호, 현재의 인코딩 계수, 현재의 제1 인코딩 구간, 현재의 제2 인코딩 구간 및 현재의 구간 길이를 획득하는 조작을 반복 실행하기 위한 반복모듈을 포함하는 것을 특징으로 하는 데이터 인코딩 장치. - 저장매체에 있어서,
프로세서가 제1항 내지 제11항 중의 어느 한 항에 따른 상기 데이터 인코딩 방법 중의 단계를 실행하도록 로딩하기에 적합한 다수의 명령이 저장되는 것을 특징으로 하는 저장매체.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710765880.5A CN109428602A (zh) | 2017-08-30 | 2017-08-30 | 一种数据编码方法、装置以及存储介质 |
CN201710765880.5 | 2017-08-30 | ||
PCT/CN2018/088746 WO2019041918A1 (zh) | 2017-08-30 | 2018-05-28 | 一种数据编码方法、装置以及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20190038746A true KR20190038746A (ko) | 2019-04-09 |
Family
ID=65504156
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020187017276A KR20190038746A (ko) | 2017-08-30 | 2018-05-28 | 데이터 인코딩 방법, 장치 및 저장매체 |
Country Status (3)
Country | Link |
---|---|
KR (1) | KR20190038746A (ko) |
CN (1) | CN109428602A (ko) |
WO (1) | WO2019041918A1 (ko) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112104441B (zh) * | 2020-11-05 | 2021-02-12 | 广州市玄武无线科技股份有限公司 | 业务数据包编码及解码方法、装置及系统 |
CN112330948B (zh) * | 2021-01-04 | 2021-04-27 | 杭州涂鸦信息技术有限公司 | 红外遥控码匹配方法、装置、计算机设备和可读存储介质 |
CN113098524B (zh) * | 2021-03-22 | 2024-08-06 | 北京达佳互联信息技术有限公司 | 信息编码方法、装置、电子设备及存储介质 |
CN113746599B (zh) * | 2021-08-24 | 2024-03-22 | 湖南遥昇通信技术有限公司 | 编码方法、译码方法、终端、电子设备和存储介质 |
CN113766237B (zh) * | 2021-09-30 | 2024-07-02 | 咪咕文化科技有限公司 | 一种编码方法、解码方法、装置、设备及可读存储介质 |
CN116610265B (zh) * | 2023-07-14 | 2023-09-29 | 济南玖通志恒信息技术有限公司 | 一种商务信息咨询系统的数据存储方法 |
CN117353751B (zh) * | 2023-12-06 | 2024-02-23 | 山东万辉新能源科技有限公司 | 基于大数据的无人充电桩交易数据智能管理系统 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101257366B (zh) * | 2008-03-27 | 2010-09-22 | 华为技术有限公司 | 编解码方法、通讯系统及设备 |
US7773004B2 (en) * | 2008-07-08 | 2010-08-10 | Qualcomm Incorporated | CAVLC run-before decoding scheme |
CN101409759B (zh) * | 2008-11-19 | 2010-08-18 | 上海大学 | 基于连“1”特性的jpeg图像再次编码检测方法 |
CN106445890B (zh) * | 2016-07-07 | 2019-06-25 | 湖南千年华光软件开发有限公司 | 数据处理方法 |
-
2017
- 2017-08-30 CN CN201710765880.5A patent/CN109428602A/zh active Pending
-
2018
- 2018-05-28 KR KR1020187017276A patent/KR20190038746A/ko not_active Application Discontinuation
- 2018-05-28 WO PCT/CN2018/088746 patent/WO2019041918A1/zh active Application Filing
Also Published As
Publication number | Publication date |
---|---|
WO2019041918A1 (zh) | 2019-03-07 |
CN109428602A (zh) | 2019-03-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR20190038747A (ko) | 데이터 인코딩 방법, 장치 및 저장매체 | |
KR20190038746A (ko) | 데이터 인코딩 방법, 장치 및 저장매체 | |
CN102687404B (zh) | 用于数据压缩的数据值出现信息 | |
JP5221047B2 (ja) | 圧縮率の向上のために改善されたコンテキストモデル選択を使用するcabac符号化方法及び装置、並びにcabac復号化方法及び装置 | |
KR100694098B1 (ko) | 산술 복호 방법 및 그 장치 | |
CN110266316B (zh) | 一种数据压缩、解压方法、装置和设备 | |
KR19990078037A (ko) | 적응확률추정방법및적응부호화방법과적응복호화방법 | |
US12010352B2 (en) | Coding method and related device | |
KR20200093404A (ko) | 신경망 가속기 및 그것의 동작 방법 | |
KR20090070554A (ko) | 트렐리스를 이용한 양자화 부호화 및 역양자화 복호화 방법및 장치 | |
KR101023536B1 (ko) | 데이터 무손실 압축 방법 | |
CN112332857B (zh) | 一种用于ldpc码的循环移位网络系统及循环移位方法 | |
CN109981108B (zh) | 数据压缩方法、解压缩方法、装置及设备 | |
CN1766830A (zh) | 基于处理器字长的数的二进制表示 | |
KR20180067956A (ko) | 데이터 압축 장치 및 방법 | |
JPH11340838A (ja) | 符号化装置および復号装置 | |
WO2024138981A1 (zh) | 数据压缩和解压缩方法、装置、电子设备及存储介质 | |
CN112332854A (zh) | 霍夫曼编码的硬件实现方法、装置及存储介质 | |
CN112449191B (zh) | 压缩多个图像的方法、解压缩图像的方法和装置 | |
CN103428502B (zh) | 一种解码方法及解码系统 | |
JP2003188736A (ja) | 符号化装置及び復号装置及び符号化・復号装置及び符号化方法及び復号方法及び符号化・復号方法及びプログラム | |
Wang | A set of transformations for lossless image compression | |
CN114024551A (zh) | 数据无损压缩方法、系统、电子设备及介质 | |
CN113131947A (zh) | 译码方法、译码器和译码装置 | |
Wei et al. | Efficient VLSI Huffman encoder implementation and its application in high rate serial data encoding |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E601 | Decision to refuse application |