morph_digit_as_char_to_uint8 (Radix:ℤ)
      <Digit Radix> ~ Char ~ Ascii ~ x86.UInt8
-->   <Digit Radix> ~ x86.UInt8
```
    if( *src >= '0' && *src <= '9' )
        *dst = *src - '0';
    else if( *src >= 'a' && *src <= 'f')
        *dst = 0xa + *src - 'a';
    else if( *src >= 'A' && *src <= 'F')
        *dst = 0xa + *src - 'A';
    else
        return -1;

    if( *dst < Radix ) {
        return 0;
    } else {
        return -1;
    }
```

morph_digit_as_char_to_uint64 (Radix:ℤ)
      <Digit Radix> ~ Char ~ Ascii ~ x86.UInt8
-->   <Digit Radix> ~ x86.UInt64
```
    if( *src >= '0' && *src <= '9' )
        *dst = *src - '0';
    else if( *src >= 'a' && *src <= 'f')
        *dst = 0xa + *src - 'a';
    else if( *src >= 'A' && *src <= 'F')
        *dst = 0xa + *src - 'A';
    else
        return -1;

    if( *dst < Radix ) {
        return 0;
    } else {
        return -1;
    }
```

morph_digit_as_uint8_to_char (Radix:ℤ_16)
      <Digit Radix> ~ x86.UInt8
-->   <Digit Radix> ~ Char ~ Ascii ~ x86.UInt8
```
    if ( *src < 10 )
        *dst = *src + '0';
    else if( *dst < 16 )
        *dst = *src - 0xa + 'a';
    else
        return -1;

    return 0;
```

morph_digit_as_uint64_to_char (Radix:ℤ_16)
      <Digit Radix> ~ x86.UInt64
-->   <Digit Radix> ~ Char ~ Ascii ~ x86.UInt8
```
    if ( *src < 10 )
        *dst = *src + '0';
    else if( *dst < 16 )
        *dst = *src - 0xa + 'a';
    else
        return -1;

    return 0;
```