The bubblebabble binary data encoding specification by Antti Huima has a few errors.

--- /tmp/original 2011-03-19 02:03:44.550808780 -0400 +++ draft-huima-01.txt 2011-03-18 20:32:15.000000000 -0400 @@ -53,7 +53,7 @@ Let the data to be encoded be D[1] ... D[K] where K is the length of the data in bytes; every D[i] is an integer from 0 to 2^8 - 1. - First define the checksum series C[1] ... C[_|K/2|_] where + First define the checksum series C[1] ... C[_|K/2|_ + 1] where C[1] = 1 @@ -66,11 +66,11 @@ where - a = (((D[i * 2 - 3] >> 6) & 3) + C[i]) mod 6 - b = (D[i * 2 - 3] >> 2) & 15 - c = (((D[i * 2 - 3]) & 3) + _|C[i] / 6|_) mod 6 - d = (D[i * 2 - 2] >> 4) & 15; and - e = (D[i * 2 - 3]) & 15. + a = (((D[i * 2 - 1] >> 6) & 3) + C[i]) mod 6 + b = (D[i * 2 - 1] >> 2) & 15 + c = (((D[i * 2 - 1]) & 3) + _|C[i] / 6|_) mod 6 + d = (D[i * 2] >> 4) & 15; and + e = (D[i * 2]) & 15. The partial tuple P is @@ -78,15 +78,15 @@ where if K is even then - a = (C[i]) mod 6 + a = (C[K/2 + 1]) mod 6 b = 16 - c = _|C[i] / 6|_ + c = _|C[K/2 + 1] / 6|_ but if it is odd then - a = (((D[K] >> 6) & 3) + C[i]) mod 6 + a = (((D[K] >> 6) & 3) + C[_|K/2|_ + 1]) mod 6 b = (D[K] >> 2) & 15 - c = (((D[K]) & 3) + _|C[i] / 6|_) mod 6 + c = (((D[K]) & 3) + _|C[_|K/2|_ + 1] / 6|_) mod 6 The `vowel table' V maps integers between 0 and 5 to vowels as @@ -117,6 +117,9 @@ 14 - v 15 - z 16 - x + + Note well that the vowel and consonant tables are indexed from 0, while + the data and checksum series are indexed from 1. The encoding E(T) of a tuple T = <a, b, c, d, e> is then the string

Without the correction in the definition of `a b c d e`

, the array indices will be negative for `i`

=1.

Here is the updated version. The RCS file gives a record of my changes.

## 1 comment :

Interesting, I wonder if this is patched in jacksum, I must download the java source and check it out.

Post a Comment