morph_posint_radix_le (SrcRadix:ℤ, DstRadix:ℤ)
      ℕ
    ~ <PosInt SrcRadix LittleEndian>
    ~ <Seq~<LengthPrefix x86.UInt64> <Digit SrcRadix>~x86.UInt64>
-->   ℕ
    ~ <PosInt DstRadix LittleEndian>
    ~ <Seq~<LenghtPrefix x86.UInt64> <Digit DstRadix>~x86.UInt64>
```
    uint64_t value = 0;

    for( uint64_t i = 0; i < src->len; ++i ) {
        value *= SrcRadix;
        value += src->items[src->len - i - 1];
    }

    length_prefix_uint64_array_clear( dst );

    while( value > 0 ) {
        length_prefix_uint64_array_push( dst, value % DstRadix );
        value /= DstRadix;
    }

    return 0;
```

morph_posint_radix_be (SrcRadix:ℤ, DstRadix:ℤ)
      ℕ
    ~ <PosInt SrcRadix BigEndian>
    ~ <Seq~<LengthPrefix x86.UInt64> <Digit SrcRadix>~x86.UInt64>
-->   ℕ
    ~ <PosInt DstRadix BigEndian>
    ~ <Seq~<LengthPrefix x86.UInt64> <Digit DstRadix>~x86.UInt64>
```
    uint64_t value = 0;

    for( uint64_t i = 0; i < src->len; ++i ) {
        value *= SrcRadix;
        value += src->items[i];
    }

    uint64_t v = value;
    dst->len = 0;
    while( v ) {
        dst->len++;
        v /= DstRadix;
    }

    uint64_t i = dst->len;
    while( value > 0 ) {
        dst->items[--i] = ( dst, value % DstRadix );
        value /= DstRadix;
    }

    return 0;
```

morph_posint_endianness (Radix:ℤ)
      ℕ
    ~ <PosInt Radix LittleEndian>
    ~ <Seq~<LengthPrefix x86.UInt64> <Digit Radix> ~ x86.UInt64>
-->   ℕ
    ~ <PosInt Radix BigEndian>
    ~ <Seq~<LengthPrefix x86.UInt64> <Digit Radix> ~ x86.UInt64>
```
    return length_prefix_uint64_array_reverse( src, dst );
```

morph_posint_endianness (Radix:ℤ)
      ℕ
    ~ <PosInt Radix BigEndian>
    ~ <Seq~<LengthPrefix x86.UInt64> <Digit Radix> ~ x86.UInt64>
-->   ℕ
    ~ <PosInt Radix LittleEndian>
    ~ <Seq~<LengthPrefix x86.UInt64> <Digit Radix> ~ x86.UInt64>
```
    return length_prefix_uint64_array_reverse( src, dst );
```