# Bug in KangarooTwelve's reference implementation posted May 2017

When playing around with KangarooTwelve I noticed that the python implementation's `right_encode()`

function was not consistent with the C version:

python implementation of right_encode

```
λ python right_encode.py
right_encode(0): [0]
right_encode(1): [1][3]
right_encode(2): [2][3]
right_encode(255): [255][5]
right_encode(256): [1][0][6]
right_encode(257): [1][1][6]
```

C implementation of right_encode:

```
λ ./right_encode
right_encode(0): 00
right_encode(1): 0101
right_encode(2): 0201
right_encode(255): ff01
right_encode(256): 010002
right_encode(257): 010102
```

The problem was that the python implementation used the function `bytes()`

to create byte strings, which has breaking behaviors between python2 and python3.

python2:

```
>>> bytes([1])
'[1]'
```

python3:

```
>>> bytes([1])
b'\x01'
```

The fix was to use bytearray() instead which is consistent across the two versions of Python.

Here are some random

populararticles:Here are some random

recentarticles:## Comments