'Encodes the checksum ``value`` using the algorithm described
in SPR section A.7.2 and returns it as a 16 character string.
Parameters
value
a checksum
Returns
ascii encoded checksum'

def _char_encode(self, value):

    value = np.uint32(value)
    asc = np.zeros((16,), dtype='byte')
    ascii = np.zeros((16,), dtype='byte')
    for i in range(4):
        byte = ((value & self._MASK[i]) >> ((3 - i) * 8))
        ch = self._encode_byte(byte)
        for j in range(4):
            asc[((4 * j) + i)] = ch[j]
    for i in range(16):
        ascii[i] = asc[((i + 15) % 16)]
    return decode_ascii(ascii.tostring())
