'Convert internal array values back to ASCII table representation.
The ``input_field`` is the internal representation of the values, and
the ``output_field`` is the character array representing the ASCII
output that will be written.'

def _scale_back_ascii(self, col_idx, input_field, output_field):

    starts = self._coldefs.starts[:]
    spans = self._coldefs.spans
    format = self._coldefs[col_idx].format
    end = super(FITS_rec, self).field((-1)).itemsize
    starts.append((end + starts[(-1)]))
    if (col_idx > 0):
        lead = ((starts[col_idx] - starts[(col_idx - 1)]) - spans[(col_idx - 1)])
    else:
        lead = 0
    if (lead < 0):
        warnings.warn('Column    {!r}    starting    point    overlaps    the    previous    column.'.format((col_idx + 1)))
    trail = ((starts[(col_idx + 1)] - starts[col_idx]) - spans[col_idx])
    if (trail < 0):
        warnings.warn('Column    {!r}    ending    point    overlaps    the    next    column.'.format((col_idx + 1)))
    print format
    if ('A' in format):
        _pc = '{:'
    else:
        _pc = '{:>'
    fmt = ''.join([_pc, format[1:], ASCII2STR[format[0]], '}', ('    ' * trail)])
    trailing_decimal = ((format.precision == 0) and (format.format in ('F', 'E', 'D')))
    for (jdx, value) in enumerate(input_field):
        value = fmt.format(value)
        if (len(value) > (starts[(col_idx + 1)] - starts[col_idx])):
            raise ValueError("Value    {!r}    does    not    fit    into    the    output's    itemsize    of    {}.".format(value, spans[col_idx]))
        if (trailing_decimal and (value[0] == '    ')):
            value = (value[1:] + '.')
        output_field[jdx] = value
    if ('D' in format):
        output_field.replace(encode_ascii('E'), encode_ascii('D'))
