WO2002061949A1 - Method of encoding binary data - Google Patents

Method of encoding binary data Download PDF

Info

Publication number
WO2002061949A1
WO2002061949A1 PCT/IL2001/000103 IL0100103W WO02061949A1 WO 2002061949 A1 WO2002061949 A1 WO 2002061949A1 IL 0100103 W IL0100103 W IL 0100103W WO 02061949 A1 WO02061949 A1 WO 02061949A1
Authority
WO
WIPO (PCT)
Prior art keywords
mod
int
chunks
predetermined number
predetermined
Prior art date
Application number
PCT/IL2001/000103
Other languages
French (fr)
Inventor
Aryeh Eiderman
Israel Marelus
Original Assignee
Netstrap Ltd.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Netstrap Ltd. filed Critical Netstrap Ltd.
Priority to PCT/IL2001/000103 priority Critical patent/WO2002061949A1/en
Publication of WO2002061949A1 publication Critical patent/WO2002061949A1/en

Links

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion 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

Definitions

  • the present invention relates to the encoding of binary data for transfer between computers connected via a network.
  • each of the 128 characters has a numerical code from 0-127, such that, for example, the letter "B” has a value of 66, the letter “D” has a value of 68, and so on.
  • Additional characters may be assigned, in an 8 bit system, predetermined numerical values from 128 to 255. However, as some data receiving protocols are based on a 7 bit data system, 8 bit data must be divided into two bytes.
  • a problem stemming from transmission of data between computers is caused by the fact that all computer files which contain, other than the. standard 95 ASCII characters, text, image or sound data, must be not only encoded so as to render them transmittable, but also decodable by software resident on recipient computers which may have different operating systems employing different compilers. Examples of some of the different systems used are DOS and Windows 95/98, which are used by PC's, as well as Unix and those employed by Macintosh computers.
  • 3 to 4 byte systems such as the so-called UUencode, "XX,” “MIME64,” and “BinHex,” wherein 3 bytes are encoded into a 4 byte form, so as to have an expansion ratio of approximately 33% in the volume of data; and the "BtoA” system, wherein 4 bytes are encoded into a 5 byte form, so as to have an expansion ratio of only 25%.
  • both calculation time and transmission time are factors governing the overall encode-to-decode time (where data is encoded at a first station and decoding is performed at a second station, remote from the first station).
  • the expansion ratio Due to the relative slowness of many public networks, however, via which many consumers access the Internet, and send electronic mail, the expansion ratio is of great significance.
  • the smaller the expansion ratio the less time it will take to transmit encoded data.
  • the smallest expansion ratio is 25%, for the BtoA system, described above.
  • the present invention seeks to provide an improved method of encoding binary data for transmission between two or more computers, in which the encoded data has an expansion ratio of less than 25%, preferably 22.22 %, thereby reducing the time required for transmission of the encoded data.
  • a method of encoding binary data for transfer from a computer of origin to a recipient computer which includes the following steps:
  • the step (ii) of mathematically processing includes the step of dividing the value of at least one of the n-1 chunks by a predetermined number so as to produce a MOD whose value is equal to or greater than the predetermined number, and the method further includes the additional steps of (v) further dividing the other of the MOD and INT by the predetermined number, thereby to produce further MOD and INT, and (vi) entering the predetermined one of the further MOD and further INT into a predetermined byte of the encoded sequence; and, if the further MOD has a value which is equal to or greater than the predetermined number, repeating the step (v) of further dividing, and the step (vi) of entering, until the value of the further MOD is less than the predetermined number.
  • the one or more n-1 chunks is all of the n-1 chunks.
  • the step (iv) of mathematically processing includes the step of mathematically processing the other of the MOD and INT as a function of at least a predetermined multiplier and the predetermined number, so as to produce a modulo MOD and an integer INT.
  • step (iv) includes mathematically processing the other of the MOD and INT as a function also of a predetermined subsequent chunk in the unencoded sequence.
  • the predetermined number is a different, predetermined number for each of the n-1 chunks.
  • n is greater than or equal to 3.
  • Figs. 1A and IB are diagrams illustrating the 9tol l encoding method of the invention, as exemplified by the Simplified Continuous routines of the invention;
  • Figs. 2A and 2B are diagrams illustrating the 9tol l encoding method of the invention, as exemplified by the Complex Continuous routines of the invention.
  • Figs. 3A and 3B are diagrams illustrating the 9tol l encoding method of the invention, as exemplified by the Accumulator routines of the invention.
  • the present invention provides an improved method of encoding binary data for transmission between two or more computers, such that the encoded data has an expansion ratio of less than 1.25. More particularly, the present invention provides a method of encoding binary data employing a 9 to 11 system, in which unencoded data has a sequence of Bn bytes, and the encoded data corresponding thereto has a sequence of N bytes, thereby to provide an expansion ratio N to Bn of 11/9 or 1.22%.
  • 9tol l encoding is also intended to include multiples of 9tol 1, including, by way of example, 18 to 22, and 36 to 44 in which, while the amount of data being encoded at any one time is proportionately greater than in the present 9toll system, the expansion ratio remains 22.22%.
  • 9tol l expansion of the present invention is particularly advantageous with respect to either the 3to4 or 4to5 methods, which, for a 9 byte unencoded word would result in 12 and 11.25 byte encoded words, respectively.
  • each such routine implements the 9 to 11 method of the invention, resulting in a smaller volume of encoded data for a given unencoded data block, thus also facilitating a shorter transmission time for a given volume of unencoded data at a given rate of transmission.
  • the method of the present invention employs a table having 94 characters, this thus being the encoding calculation "base,” as evident from the following description.
  • the method of the invention may employ, as described above, a plurality of different routines, which may be divided into three groups, which include:
  • FIGs. 1 A and IB there is depicted a method of 9tol 1 binary data encoding, in accordance with a preferred embodiment of the present invention.
  • the present embodiment of the invention entails dividing each 9 byte72 bit portion of unencoded data, seen at 10 in Figs. 1A and IB, into 11 chunks Cl-Cll of different sizes, seen at block 12.
  • the chunks Cl-Cl l have 13, 6, 7, 6, 7, 6, 7, 6, and 1 bit, respectively.
  • Chunk CI is divided by a predetermined number, so as to obtain two results, integer "INT", and a modulo "MOD.”
  • the predetermined number is 94, which is the base of the encoding system of the present invention.
  • the predetermined number is a multiplier M, which has a value that varies as listed in TABLE I below, depending on the particular chunk.
  • a predetermined one of MOD and INT is then placed in a first byte - which may be any predetermined byte, but is exemplified here by byte 1 - of an encoded eleven byte sequence, shown as block 14 in Figs. 1A and IB.
  • routines F and G the result INT is placed in byte 1 of the encoded sequence, while, in routine H, the result MOD is placed thereat.
  • routine F the mathematical expression used for evaluating the further result is (INT x 2 b ) + Cn, wherein b is the number of bits in the next chunk, and n is the number of the next chunk, initially C2, then C3, and so on for succeeding steps.
  • routine G the mathematical expression used for evaluating the further result is (INT + (Cn x M)).
  • routine H the mathematical expression used for evaluating the further result is (MOD x 2 b ) + Cn.
  • the further result is then divided by the predetermined number, which is either base 94 or multiplier M, as described above in step 1, so as to obtain a result having a MOD and an INT.
  • a predetermined one of MOD and INT is then placed in byte 2 of encoded eleven byte sequence 14.
  • Steps 3, 4 and 5 are then repeated for each of the remaining chunks C3-C11, successively, thereby to obtain an 11 byte encoded sequence.
  • FIGs. 2A and 2B there is depicted a method of 9tol 1 binary data encoding, in accordance with a further embodiment of the present invention.
  • the present method is exemplified by routines J, K, L and M, whose basic algorithms are listed below.
  • routine K enables sorting of the encoded data, in a manner similar to that by which unencoded data may be sorted.
  • the present embodiment of the invention entails - as with the routines shown and described above in conjunction with Figs. 1 A and IB - dividing each 9 byte72 bit portion of unencoded data, seen at 20 in Figs. 2 A and 2B, into 3 chunks C1-C3, seen at block 22.
  • routines J and K chunks CI and C2 are seen to have equal sizes, e.g. of 32 bits each, third chunk C3 having 8 bits.
  • routines L and M chunks CI and C2 are of different sizes, having 30 and 27 bits, respectively, third byte C3 having 15 bits.
  • Chunk CI is divided by 94, which is the base of the encoding system of the present invention, four times, each time obtaining an integer "INT", and a modulo "MOD.” As seen in Figs. 2A and 2B, each of the four MODs obtained is entered directly into a corresponding byte of the encoded sequence 12, while the INT obtained is subjected to further division by base 94, thereby to obtain a further MOD and INT, which, respectively are entered into a preselected byte of encoded sequence 12, and sent for further processing.
  • ValAccC2 is then divided by base 94 repeatedly, in a similar manner to that described above for CI, so as to obtain several more INTs and MODs, which are employed as above for the INTs and MODs derived from CI .
  • ValAccC2 is C2 + (CI x 2 b2 ; and ValAccC3 is obtained by evaluating the term C3 + (ValAccC2 x 2 b3 ),
  • b2 is the number of bits in chunk C2
  • b3 is the number of bits in chunk C3.
  • ValAccC2 is (C2 x M2) + CI; and ValAccC3 is obtained by evaluating the term (C3 x M3) + ValAccC2,
  • M2 and M3 are predetermined multipliers for which,
  • Val AccC2 INT[VALACCC2/94]
  • FIGs. 3 A and 3B there is depicted a method of 9tol 1 binary data encoding, in accordance with a further embodiment of the present invention.
  • the present method is exemplified by routines S, T and U, whose basic algorithms are listed below.
  • the present embodiment of the invention entails - as with the routines shown and described above in conjunction with Figs. 1 A - 2B - dividing each 9 byte 72 bit portion of unencoded data, seen at 30 in Figs. 3A and 3B, into a plurality of chunks.
  • routine S Fig. 3 A
  • the unencoded data is divided into 8 chunks C1-C8, of which the seven chunks C1-C7 are typically equal, having ten bits each; chunk C8 having two bits.
  • routines T and U there are provided three chunks only.
  • chunks CI and C2 are seen to have equal sizes, e.g. of 32 bits each, third chunk C3 having 8 bits.
  • routine U chunks CI and C2 are also equal, having 30 bits each, and chunk C3 has 12.
  • the initial value "Nal Ace" of an "accumulator" chunk, referenced 34, is fixed as the value of the last byte of the unencoded block.
  • Nal Ace initially has the value of C3
  • Nal Ace is initially equal to the value of C8.
  • accumulator 34 is a 32 bit integer.
  • Each of the remaining chunks is then divided one or more times by the base of the present encoding system, 94.
  • the number of times by which each chunk is divided depends on the bit size of the chunk.
  • Each division produces a MOD, which is entered into a predetermined byte the encoded sequence; and an INT.
  • routine S the mathematical expression used to obtain NalAcc in the accumulator routines is L-l ⁇ [C L I ⁇ T[(Bi/b) x M]]
  • L number of chunks in the unencoded block
  • M is a predetermined multiplier for which

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

A method (Fig. 2A) of encoding binary data 820) for transfer from a computer of origin to a recipient computer, wherein a ratio N to Bn is less than 1.25 and wherein the method includes the steps: (i) dividing a portion of un-encoded data, having a predetermined number of bytes Bn into a plurality n of chunks (22); (ii) processing the value of each of n-1 chunks as a function of at least a predetermined number so as to produce a modul MOD and an integer INT; (iii) entering a predetermined one of the MOD and INT of each of the n-1 chunks into N-x predetermined bytes of an encoded sequence having a total of N bytes, wherein x is greater than or equal to 1; and (iv) processing the other of the MOD and INT of each of the n-1 chunks so as to produce therefor results for entry into the remaining at least one byte of the encoded sequence (12).

Description

METHOD OF ENCODING BINARY DATA
FIELD OF THE INVENTION The present invention relates to the encoding of binary data for transfer between computers connected via a network.
BACKGROUND OF THE INVENTION
While computer networks, such as local area networks, have existed for many years, the problem of encoding binary data for transmission between client computers has become a widespread global consideration since the advent of the Internet and e-mail.
By way of introduction, it is known that a single byte contains up to 8 bits of information, each of which has a value between 0 and 255, as per the IBM EBCDIC (Extended Binary Coded Decimal Interchange Code). It is further known that, in the ASCII system, each of the 128 characters has a numerical code from 0-127, such that, for example, the letter "B" has a value of 66, the letter "D" has a value of 68, and so on.
Additional characters may be assigned, in an 8 bit system, predetermined numerical values from 128 to 255. However, as some data receiving protocols are based on a 7 bit data system, 8 bit data must be divided into two bytes.
A problem stemming from transmission of data between computers is caused by the fact that all computer files which contain, other than the. standard 95 ASCII characters, text, image or sound data, must be not only encoded so as to render them transmittable, but also decodable by software resident on recipient computers which may have different operating systems employing different compilers. Examples of some of the different systems used are DOS and Windows 95/98, which are used by PC's, as well as Unix and those employed by Macintosh computers.
The solutions which exist for preparing binary data for transmission over the Internet all entail the use of encoding routines which, due to the transformation of the data into a decodable binary format, expand the data. The expanded data also requires a certain transmission time corresponding, inter alia, to the volume of transmitted data. Clearly, a certain time is also taken to encode the data at the computer of origin, and to decode the data at the recipient computer, prior to rendering the data accessible thereat.
Currently, two encoding systems are used for facilitating binary data transmission,
3 to 4 byte systems (herein referred to as "3to4"), such as the so-called UUencode, "XX," "MIME64," and "BinHex," wherein 3 bytes are encoded into a 4 byte form, so as to have an expansion ratio of approximately 33% in the volume of data; and the "BtoA" system, wherein 4 bytes are encoded into a 5 byte form, so as to have an expansion ratio of only 25%.
In conventional communications systems, both calculation time and transmission time are factors governing the overall encode-to-decode time (where data is encoded at a first station and decoding is performed at a second station, remote from the first station). Due to the relative slowness of many public networks, however, via which many consumers access the Internet, and send electronic mail, the expansion ratio is of great significance. Clearly, the smaller the expansion ratio, the less time it will take to transmit encoded data. In known systems, the smallest expansion ratio is 25%, for the BtoA system, described above.
SUMMARY OF THE INVENTION
The present invention seeks to provide an improved method of encoding binary data for transmission between two or more computers, in which the encoded data has an expansion ratio of less than 25%, preferably 22.22 %, thereby reducing the time required for transmission of the encoded data.
There is thus provided, in accordance with a preferred embodiment of the invention, a method of encoding binary data for transfer from a computer of origin to a recipient computer, which includes the following steps:
(i) dividing a portion of unencoded data, having a predetermined number of bytes Bn into a plurality n of chunks;
(ii) mathematically processing the value of each of n-1 chunks as a function of at least a predetermined number, so as to produce a modulo MOD and an integer INT; (iii) entering a predetermined one of the MOD and INT of each of the n-1 chunks into N-x predetermined bytes of an encoded sequence having a total of N bytes, wherein x is greater than or equal to 1; and (iv) mathematically processing the other of the MOD and INT of each of the n-1 chunks so as to produce therefor results for entry into the remaining at least one byte of the encoded sequence, wherein the ratio N to Bn is less than 1.25.
Additionally in accordance with a preferred embodiment of the present invention, the step (ii) of mathematically processing includes the step of dividing the value of at least one of the n-1 chunks by a predetermined number so as to produce a MOD whose value is equal to or greater than the predetermined number, and the method further includes the additional steps of (v) further dividing the other of the MOD and INT by the predetermined number, thereby to produce further MOD and INT, and (vi) entering the predetermined one of the further MOD and further INT into a predetermined byte of the encoded sequence; and, if the further MOD has a value which is equal to or greater than the predetermined number, repeating the step (v) of further dividing, and the step (vi) of entering, until the value of the further MOD is less than the predetermined number.
Further in accordance with a preferred embodiment of the present invention, the one or more n-1 chunks is all of the n-1 chunks.
Additionally in accordance with a preferred embodiment of the present invention, the step (iv) of mathematically processing includes the step of mathematically processing the other of the MOD and INT as a function of at least a predetermined multiplier and the predetermined number, so as to produce a modulo MOD and an integer INT.
Further in accordance with a preferred embodiment of the present invention, step (iv) includes mathematically processing the other of the MOD and INT as a function also of a predetermined subsequent chunk in the unencoded sequence.
Additionally in accordance with a preferred embodiment of the present invention, the predetermined number equals the encoding base of the present method, which, preferably is 94, such that the ratio N to Bn = 11/9.
Further in accordance with a preferred embodiment of the present invention, the predetermined number is a different, predetermined number for each of the n-1 chunks.
Additionally in accordance with a preferred embodiment of the present invention, n is greater than or equal to 3. BRIEF DESCRIPTION OF THE DRAWINGS
The present invention will be more fully understood and appreciated from the following detailed description, taken in conjunction with the drawings, in which:
Figs. 1A and IB are diagrams illustrating the 9tol l encoding method of the invention, as exemplified by the Simplified Continuous routines of the invention;
Figs. 2A and 2B are diagrams illustrating the 9tol l encoding method of the invention, as exemplified by the Complex Continuous routines of the invention; and
Figs. 3A and 3B are diagrams illustrating the 9tol l encoding method of the invention, as exemplified by the Accumulator routines of the invention.
DETAILED DESCRIPTION OF THE INVENTION
The present invention provides an improved method of encoding binary data for transmission between two or more computers, such that the encoded data has an expansion ratio of less than 1.25. More particularly, the present invention provides a method of encoding binary data employing a 9 to 11 system, in which unencoded data has a sequence of Bn bytes, and the encoded data corresponding thereto has a sequence of N bytes, thereby to provide an expansion ratio N to Bn of 11/9 or 1.22%.
It will be appreciated that the description of 9tol l encoding is also intended to include multiples of 9tol 1, including, by way of example, 18 to 22, and 36 to 44 in which, while the amount of data being encoded at any one time is proportionately greater than in the present 9toll system, the expansion ratio remains 22.22%.
It will be particularly noted that the 9tol l expansion of the present invention, is particularly advantageous with respect to either the 3to4 or 4to5 methods, which, for a 9 byte unencoded word would result in 12 and 11.25 byte encoded words, respectively.
As will be appreciated from the following description, the encoding may be implemented by use of various novel routines, in accordance with various embodiments of the invention. However, each such routine implements the 9 to 11 method of the invention, resulting in a smaller volume of encoded data for a given unencoded data block, thus also facilitating a shorter transmission time for a given volume of unencoded data at a given rate of transmission. The method of the present invention employs a table having 94 characters, this thus being the encoding calculation "base," as evident from the following description.
The method of the invention may employ, as described above, a plurality of different routines, which may be divided into three groups, which include:
1. Simplified Continuous Routine
2. Complex Continuous Routine
3. Accumul ator Routine
Simplified Continuous Routines
Referring now to Figs. 1 A and IB, there is depicted a method of 9tol 1 binary data encoding, in accordance with a preferred embodiment of the present invention.
The present embodiment of the invention entails dividing each 9 byte72 bit portion of unencoded data, seen at 10 in Figs. 1A and IB, into 11 chunks Cl-Cll of different sizes, seen at block 12. Preferably the chunks Cl-Cl l have 13, 6, 7, 6, 7, 6, 7, 6, 7, 6, and 1 bit, respectively.
In each of the routines, the following additional steps are performed:
1. Chunk CI is divided by a predetermined number, so as to obtain two results, integer "INT", and a modulo "MOD." As seen in Fig. 1A, in routines F and G, the predetermined number is 94, which is the base of the encoding system of the present invention. As seen in Fig. IB, however, in routine H, the predetermined number is a multiplier M, which has a value that varies as listed in TABLE I below, depending on the particular chunk.
2. A predetermined one of MOD and INT is then placed in a first byte - which may be any predetermined byte, but is exemplified here by byte 1 - of an encoded eleven byte sequence, shown as block 14 in Figs. 1A and IB. In routines F and G, the result INT is placed in byte 1 of the encoded sequence, while, in routine H, the result MOD is placed thereat.
3. A mathematical function of the other of the results is combined with the next chunk so as to obtain a further result, which is then divided by a predetermined number so as to obtain INT and MOD, as above. a) In routine F, the mathematical expression used for evaluating the further result is (INT x 2b) + Cn, wherein b is the number of bits in the next chunk, and n is the number of the next chunk, initially C2, then C3, and so on for succeeding steps. b) In routine G, the mathematical expression used for evaluating the further result is (INT + (Cn x M)). c) In routine H, the mathematical expression used for evaluating the further result is (MOD x 2b) + Cn.
4. The further result is then divided by the predetermined number, which is either base 94 or multiplier M, as described above in step 1, so as to obtain a result having a MOD and an INT.
5. A predetermined one of MOD and INT is then placed in byte 2 of encoded eleven byte sequence 14.
Steps 3, 4 and 5 are then repeated for each of the remaining chunks C3-C11, successively, thereby to obtain an 11 byte encoded sequence.
Figure imgf000007_0001
TABLE I
Complex Continuous Routines
Referring now to Figs. 2A and 2B, there is depicted a method of 9tol 1 binary data encoding, in accordance with a further embodiment of the present invention. The present method is exemplified by routines J, K, L and M, whose basic algorithms are listed below.
It will be appreciated by persons skilled in the art, that routine K enables sorting of the encoded data, in a manner similar to that by which unencoded data may be sorted..
The present embodiment of the invention entails - as with the routines shown and described above in conjunction with Figs. 1 A and IB - dividing each 9 byte72 bit portion of unencoded data, seen at 20 in Figs. 2 A and 2B, into 3 chunks C1-C3, seen at block 22. In routines J and K chunks CI and C2 are seen to have equal sizes, e.g. of 32 bits each, third chunk C3 having 8 bits. In routines L and M chunks CI and C2 are of different sizes, having 30 and 27 bits, respectively, third byte C3 having 15 bits.
In each of the routines J, K, L and M, the following additional steps are performed:
1. Chunk CI is divided by 94, which is the base of the encoding system of the present invention, four times, each time obtaining an integer "INT", and a modulo "MOD." As seen in Figs. 2A and 2B, each of the four MODs obtained is entered directly into a corresponding byte of the encoded sequence 12, while the INT obtained is subjected to further division by base 94, thereby to obtain a further MOD and INT, which, respectively are entered into a preselected byte of encoded sequence 12, and sent for further processing.
2. The last (fourth) INT obtained from CI is mathematically combined, as described in greater detail below, with the second chunk C2, so as to provide a new "accumulated value" of C2, referred to below also as ValAccC2.
3. ValAccC2 is then divided by base 94 repeatedly, in a similar manner to that described above for CI, so as to obtain several more INTs and MODs, which are employed as above for the INTs and MODs derived from CI .
4. The last INT obtained from ValAccC2 (which is, for example, the fourth in routines
J and L, and the fifth in routines K and M) is mathematically combined, with the third chunk C3, so as to provide a new "accumulated value" of C3, referred to below also as ValAccC3. a. In routines J and L, the mathematical expression used to obtain ValAccC2 is C2 + (CI x 2b2; and ValAccC3 is obtained by evaluating the term C3 + (ValAccC2 x 2b3),
In which b2 is the number of bits in chunk C2, and b3 is the number of bits in chunk C3.
b. In routines K and M, however, the mathematical expression used to obtain
ValAccC2 is (C2 x M2) + CI; and ValAccC3 is obtained by evaluating the term (C3 x M3) + ValAccC2,
In which M2 and M3 are predetermined multipliers for which,
In routine K, M2 = 56 and M3 = 33, and
In routine M, M2 = 14 and M3 = 25. alAccC2 is then divided by base 94 one or more times, in a similar manner to that described above for ValAccC2, so as to obtain one or more INTs and MODs, the final INT being entered into the final byte of encoded sequence 12.
The algorithms for routines J, K, L and M, are as follows:
ROUTINE J
STEP 1 : Resultl = MOD[Cl/94] (note: place in first byte of 11 byte encoded sequence) and Cl = INT[Cl/94]
STEP 2: Result2 = MOD[Cl/94] (note: place in second byte of 11 byte encoded sequence) and Cl = INT[Cl/94]
STEP 3: Result3 = MOD[Cl/94] and CI = INT[Cl/94]
STEP 4: Result4 = MOD[Cl/94] and CI = INT[Cl/94] and C2 = C2 + Cl x 232 = ValAccC2
STEP 5: Result5 = MOD[ValAccC2/94] (note: place in fifth byte of 11 byte encoded sequence)
I and Val AccC2 = INT[VALACCC2/94]
STEP 6: Resultδ = MOD[ValAccC2/94] and ValAccC2 = INT[ValAccC2/94]
STEP 7: Result7 = MOD[ValAccC2/94] and ValAccC2 = INT[ValAccC2/94]
STEP 8: Resultδ = MOD[NalAccC2/94] and NalAccC2 = IΝT[NalAccC2/94]
STEP 9: Result9 = MOD[NalAccC2/94] and NalAccC2 = IΝT[NalAccC2/94] and C3 = C3 + NalAccC2 x 28 = NalAccC3
STEP 10: ResultlO = MOD[NalAccC3/94] (note: place in tenth byte of 11 byte encoded sequence) and NalAccC3 - IΝT[NalAccC3/94]
STEP 11 : Resultl 1 = Nal AccC3
End
ROUTINE K
STEP 1 : Resultl = MOD[C 1/94] and CI = INT[Cl/94]
STEP 2: Result2 = MOD[Cl/94] and CI = INT[Cl/94]
STEP 3: Result3 = MOD[Cl/94] and CI = INT[Cl/94]
STEP 4: Result4 = MOD[Cl/94] and CI = INT[Cl/94] and C2 = C2 x 56 + Cl = ValAccC2
STEP 5: Result5 = MOD[ValAccC2/94] and ValAccC2 = INT[ValAccC2/94]
STEP 6: Result6 = MOD[NalAccC2/94] and ValAccC2 = INT[ValAccC2/94]
STEP 7: Result7 = MOD[ValAccC2/94] and ValAccC2 = INT[NalAccC2/94] STEP 8: Resultδ = MOD[NalAccC2/94] and NalAccC2 = IΝT[NalAccC2/94]
STEP 9: Result9 = MOD[NalAccC2/94] and NalAccC2 = IΝT[NalAccC2/94] and C3 = C3 x 33 + NalAccC2 = NalAccC3
STEP 10: ResultlO = MOD[NalAccC3/94] and NalAccC3 = IΝT[NalAccC3/94]
STEP 11 : Resultl 1 = Nal AccC3
End
ROUTINE L
STEP 1: Resultl = MOD[Cl/94] and CI = INT[Cl/94]
STEP 2: Result2 = MOD[Cl/94] and CI = INT[Cl/94]
STEP 3 : Result3 = MOD[Cl/94] and CI - INT[Cl/94]
STEP 4: Result4 = MOD[Cl/94] and CI = INT[Cl/94] and C2 = C2 + C 1 x 227 = Nal AccC2.
STEP 5: Result5 = MOD[NalAccC2/94] and NalAccC2 = IΝT[NalAccC2/94]
STEP 6: Resultό = MOD[ValAccC2/94] and NalAccC2 = IΝT[NalAccC2/94]
STEP 7: Result7 = MOD[NalAccC2/94] and NalAccC2 = IΝT[NalAccC2/94]
STEP 8: Resultδ = MOD[NalAccC2/94] and NalAccC2 = IΝT[NalAccC2/94] and C3 = C3 + Nal AccC2 x 215 = Nal AccC3
STEP 9: Result9 = MOD[NalAccC3/94] and NalAccC3 = IΝT[NalAccC3/94]
STEP 10: ResultlO = MOD[NalAccC3/94] and NalAccC3 = IΝT[Val AccC3/94]
STEP 11 : Resultl 1 = Val AccC3
End
ROUTINE M
STEP 1 : Resultl = MOD[Cl/94] and CI = INT[Cl/94]
STEP 2: Result2 - MOD[Cl/94] and CI = INT[Cl/94]
STEP 3: Result3 = MOD[Cl/94] (and CI = INTfCl/94]
STEP 4: Result4 = MOD[Cl/94] and CI = INT[Cl/94] and C2 = C 1 + (C2 x 14) = Val AccC2
STEP 5: Result5 = MOD[ValAccC2/94] and ValAccC2 = INT[ValAccC2/94]
STEP 6: Resultδ = MOD[ValAccC2/94] and Val AccC2 = INT[ValAccC2/94]
STEP 7: Result7 = MOD[ValAccC2/94] and NalAccC2 = IΝT[Nal AccC2/94]
STEP 8: Resultδ = MOD[NalAccC2/94] and NalAccC2 = IΝT[NalAccC2/94] and C3 = NalAccC2 + (C3 x 25) = NalAccC3
STEP 9: Result9 = MOD[NalAccC3/94] (ΝD NalAccC3 = IΝT[NalAccC3/94]
STEP 10: ResultlO = MOD[NalAccC3/94] and NalAccC3 = IΝT[NalAccC3/94]
STEP 11 : Resultl 1 = NalAccC3
End
Accumulator Routine
Referring now to Figs. 3 A and 3B, there is depicted a method of 9tol 1 binary data encoding, in accordance with a further embodiment of the present invention. The present method is exemplified by routines S, T and U, whose basic algorithms are listed below.
The present embodiment of the invention entails - as with the routines shown and described above in conjunction with Figs. 1 A - 2B - dividing each 9 byte 72 bit portion of unencoded data, seen at 30 in Figs. 3A and 3B, into a plurality of chunks. In routine S (Fig. 3 A), the unencoded data is divided into 8 chunks C1-C8, of which the seven chunks C1-C7 are typically equal, having ten bits each; chunk C8 having two bits.
In routines T and U, there are provided three chunks only. In routine T, chunks CI and C2 are seen to have equal sizes, e.g. of 32 bits each, third chunk C3 having 8 bits. In routine U, chunks CI and C2 are also equal, having 30 bits each, and chunk C3 has 12.
In each of the routines S, T and U, the following additional steps are performed:
1. The initial value "Nal Ace" of an "accumulator" chunk, referenced 34, is fixed as the value of the last byte of the unencoded block. Thus, in routine S Nal Ace initially has the value of C3, while in routines T and U, Nal Ace is initially equal to the value of C8. Preferably, accumulator 34 is a 32 bit integer.
2. Each of the remaining chunks is then divided one or more times by the base of the present encoding system, 94. The number of times by which each chunk is divided depends on the bit size of the chunk. Each division produces a MOD, which is entered into a predetermined byte the encoded sequence; and an INT.
A. As seen in Fig. 3A, in which chunks C1-C7 are ten bit chunks, the INT is smaller than the base 94 so that no further division is required, and each INT is mathematically processed in accumulator 34, as defined in the algorithms S, T and U, listed below. B. In Fig. 3B however, there are only two chunks remaining, CI and C2, each of which has 30 bits, as mentioned above, so as to be divisible four times by base 94, until obtaining an INT which is less than 94.
3. The last INT obtained from each of the chunks except the final chunk of the unencoded sequences, namely, C1-C7 in routine S, and chunks C1-C2 in routines T and U, is mathematically combined, with the ultimate chunk C8 or C3, (according to the routine) so as to provide a new NalAcc.
In routine S, the mathematical expression used to obtain NalAcc in the accumulator routines is L-l ∑ [CL IΝT[(Bi/b) x M]]
wherein L = number of chunks in the unencoded block, B = the value of a chunk b = base 94, and M is a predetermined multiplier for which,
In routine S, M = 11, in routine T, M = 56, and in routine U, M = 14.
4. As seen in the drawings, after the initial divisions of all but the final chunk, eight bytes of the encoded sequence are occupied by encoded data. The remaining three bytes are determined by evaluating ValAcc and then dividing it twice by the base 94, each of the MODs thereby obtained being entered into two of the remaining bytes; the final INT being entered into the final remaining byte of the encoded sequence. Algorithms for routines S, T and U, are as follows:
ROUTINE S STEP 1 : ValAcc = C8
STEP 2: Resultl = MOD[Cl/94] (note: place in first byte of 11 byte encoded sequence) and NalAcc = (NalAcc* 11) + IΝT[C 1/94]
STEP 3 : Result2 = MOD[C2/94] and NalAcc = (NalAcc* 11) + IΝT[C2/94] STEP 4: Result3 = MOD[C3/94] and NalAcc = (NalAcc* 11) + IΝT[C3/94] STEP 5 : Result4 = MOD[C4/94] and NalAcc = (NalAcc* 11) + IΝT[C4/94] STEP 6: Result5 = MOD[C5/94] and NalAcc = (NalAcc* 11) + IΝT[C5/94] STEP 7; Resultό = MOD[C6/94] and NalAcc = (NalAcc* 11) + -ΝT[C6/94] STEP 8: Result7 = MOD[C7/94] and NalAcc = (NalAcc* 11) + IΝT[C7/94] STEP 9: Result8 = MOD[Nal Acc/94] and NalAcc = IΝT[NaiAcc/94] STEP 10: Result9 = MOD [Nal Acc/94] and NalAcc = IΝT[NalAcc/94] STEP 11 : ResultlO = MOD [Nal Acc/94] and NalAcc = IΝT[NalAcc/94] STEP 12: Resultl 1 = NalAcc End
ROUTINE T STEP 1: ValAcc = C3
STEP 2: Resultl = MOD[Cl/94] and CI = INT[Cl/94] STEP 3: Result2 = MOD[Cl/94] and CI = INT[Cl/94] STEP 4: Result3 = MOD[Cl/94] and CI = INT[Cl/94] STEP 5: Result4 = MOD[Cl/94] and CI = INT[Cl/94] and ValAcc = (ValAcc *56) + Cl STEP 6: Result5 = MOD[C2/94] and C2 = INT[C2/94] STEP 7: Resultό = MOD[C2/94] and C2 = INT[C2/94] STEP 8: Result7 = MOD[C2/94] and C2 = INT[C2/94] STEP 9: Result8 = MOD[C2/94] and C2 = INT[C2/94] and ValAcc = (ValAcc *56) + C2 STEP 10: Result9 = MOD[Val Acc/94] and ValAcc = INT[ValAcc/94] STEP 11 : ResultlO = MOD [Val Acc/94] and ValAcc = INT[Val Acc/94] STEP 12: Resultl 1 = ValAcc End ROUTINE U STEP 1: ValAcc = C3
STEP 2: Resultl = MOD[Cl/94] and CI = INT[Cl/94]
STEP 3 : Result2 = MOD[Cl/94] and CI = INT[Cl/94]
STEP 4: Result3 = MOD[Cl/94] and CI <= INT[Cl/94]
STEP 5: Result4 = MOD[Cl/94] and CI = INT[Cl/94] and ValAcc = (ValAcc *14) + INT[Cl/94]
STEP 6: Result5 = MOD[C2/94] and C2 = INT[C2/94]
STEP 7: Result6 = MOD[C2/94] and C2 = INT[C2/94]
STEP 8: Result7 = MOD[C2/94] and C2 = INT[C2/94]
STEP 9: Result8 = MOD[C2/94] and C2 = INT[C2/94] and ValAcc = (ValAcc H4) + INT[C2/94]
STEP 10: Result9 = MOD[ValAcc] and ValAcc = INT[ValAcc/94]
STEP 11 : ResultlO = MOD[Val Acc/94] and ValAcc = INT[Val Acc/94]
STEP 12: Resultl 1 = ValAcc
End
It will be appreciated by persons skilled in the art, that the scope of the present invention is not limited by what has been shown and described hereinabove, merely by way of example. Rather, the scope of the present invention is limited solely by the claims, which follow:

Claims

1. A method of encoding binary data for transfer from a computer of origin to a recipient computer, including the following steps:
(i) dividing a portion of unencoded data, having a predetermined number of bytes Bn into a plurality n of chunks;
(ii) mathematically processing the value of each of n-1 chunks as a function of at least a predetermined number, so as to produce a modulo MOD and an integer -NT;
(iii) entering a predetermined one of the MOD and INT of each of the n-1 chunks into
N-x predetermined bytes of an encoded sequence having a total of N bytes, wherein x is greater than or equal to 1; and
(iv) mathematically processing the other of the MOD and INT of each of the n-1 chunks so as to produce therefor results for entry into the remaining at least one byte of the encoded sequence, wherein the ratio N to Bn is less than 1.25.
2. A method according to claim 1, and wherein, said step (ii) of mathematically processing includes the step of dividing the value of at least one of the n-1 chunks by a predetermined number so as to produce a MOD whose value is equal to or greater than the predetermined number, and said method further includes the additional steps of
(vii) further dividing the other of the MOD and INT by the predetermined number, thereby to produce further MOD and INT, and (viii) entering said predetermined one of the further MOD and further INT into a predetermined byte of the encoded sequence; and, if the further MOD has a value which is equal to or greater than the predetermined number, repeating said step (v) of further dividing, and said step (vi) of entering, until the value of the further MOD is less than the predetermined number.
3. A method according to claim 2, wherein said at least one of the n-1 chunks includes all of the n-1 chunks.
4. A method according to claim 2, wherein said step (iv) of mathematically processing includes the step of mathematically processing the other of the MOD and INT as a function of at least a predetermined multiplier and said predetermined number, so as to produce a modulo MOD and an integer INT.
5. A method according to claim 4, wherein said step (iv) includes mathematically processing the other of the MOD and INT as a function also of a predetermined subsequent chunk in the unencoded sequence.
6. A method according to claim 1, also having a base, wherein the predetermined number equals the base.
7. A method according to claim 6, wherein the base equals 94.
8. A method according to claim 1, wherein the predetermined number is predetermined for each of the n-1 chunks, separately.
9. A method according to claim 1, wherein n is greater than or equal to 3, and x is not greater than 4.
10. A method according to claim 1, wherein the ratio N to Bn = 11/9.
PCT/IL2001/000103 2001-02-01 2001-02-01 Method of encoding binary data WO2002061949A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
PCT/IL2001/000103 WO2002061949A1 (en) 2001-02-01 2001-02-01 Method of encoding binary data

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/IL2001/000103 WO2002061949A1 (en) 2001-02-01 2001-02-01 Method of encoding binary data

Publications (1)

Publication Number Publication Date
WO2002061949A1 true WO2002061949A1 (en) 2002-08-08

Family

ID=11043031

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/IL2001/000103 WO2002061949A1 (en) 2001-02-01 2001-02-01 Method of encoding binary data

Country Status (1)

Country Link
WO (1) WO2002061949A1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11818191B1 (en) * 2021-11-11 2023-11-14 Two Six Labs, LLC Stateless lossless compression

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5557275A (en) * 1993-06-30 1996-09-17 U.S. Philips Corporation Error-tolerant binary encoder

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5557275A (en) * 1993-06-30 1996-09-17 U.S. Philips Corporation Error-tolerant binary encoder

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11818191B1 (en) * 2021-11-11 2023-11-14 Two Six Labs, LLC Stateless lossless compression

Similar Documents

Publication Publication Date Title
JP3337633B2 (en) Data compression method and data decompression method, and computer-readable recording medium recording data compression program or data decompression program
US5955976A (en) Data compression for use with a communications channel
US5049881A (en) Apparatus and method for very high data rate-compression incorporating lossless data compression and expansion utilizing a hashing technique
US5406278A (en) Method and apparatus for data compression having an improved matching algorithm which utilizes a parallel hashing technique
US6778103B2 (en) Encoding and decoding apparatus using context
US6122379A (en) Method and apparatus for performing simultaneous data compression and encryption
US5374916A (en) Automatic electronic data type identification process
JP2006127552A (en) Data transmitting method, data equalization method and device
EP0559824A1 (en) Binary data communication system
Awan et al. LIPT: A lossless text transform to improve compression
US6919826B1 (en) Systems and methods for efficient and compact encoding
EP0127815B1 (en) Data compression method
CN115296862B (en) Network data safety transmission method based on data coding
CN101534124B (en) Compression algorithm for short natural language
US6657564B2 (en) Method and apparatus for compressing data in which dictionary sizes are reduced
EP1289151A1 (en) A digital data transforming method
CN1426629A (en) Method and apparatus for optimized lossless compression using plurality of coders
US6292115B1 (en) Data compression for use with a communications channel
JP6835285B1 (en) Data compression method, data compression device, data compression program, data decompression method, data decompression device and data decompression program
US6112208A (en) Data compressing method and apparatus to generate bit maps in accordance with extracted data symbols
Hasugian et al. File Compression Application Design Using Half Byte Algorithm
JPH0779265B2 (en) Decompression method of compressed data
WO2002061949A1 (en) Method of encoding binary data
Shanmugasundaram et al. IIDBE: A lossless text transform for better compression
IL129773A (en) Method of encoding binary data

Legal Events

Date Code Title Description
AK Designated states

Kind code of ref document: A1

Designated state(s): AE AG AL AM AT AU AZ BA BB BG BR BY BZ CA CH CN CR CU CZ DE DK DM DZ EE ES FI GB GD GE GH GM HR HU ID IL IN IS JP KE KG KP KR KZ LC LK LR LS LT LU LV MA MD MG MK MN MW MX MZ NO NZ PL PT RO RU SD SE SG SI SK SL TJ TM TR TT TZ UA UG US UZ VN YU ZA ZW

AL Designated countries for regional patents

Kind code of ref document: A1

Designated state(s): GH GM KE LS MW MZ SD SL SZ TZ UG ZW AM AZ BY KG KZ MD RU TJ TM AT BE CH CY DE DK ES FI FR GB GR IE IT LU MC NL PT SE TR BF BJ CF CG CI CM GA GN GW ML MR NE SN TD TG

121 Ep: the epo has been informed by wipo that ep was designated in this application
REG Reference to national code

Ref country code: DE

Ref legal event code: 8642

32PN Ep: public notification in the ep bulletin as address of the adressee cannot be established

Free format text: NOTING OF LOSS OF RIGHTS PURSUANT TO RULE 69(1) EPC

122 Ep: pct application non-entry in european phase
NENP Non-entry into the national phase

Ref country code: JP