I think it is important to understand that what you are doing is
NOT converting characters. None of this has anything to do with conversions. It is about display formatting. Data can be displayed in any format you want.
What you have is a byte. That byte can range in value from 0 to 255 in base 10. It can range from 0 to FF in base 16 or hexadecimal and 0 to 11111111 in base 2 or binary. Data is data. There is nothing that makes a byte an ASCII character or hexadecimal character or anything else. It is just a byte. What I just showed you are three different interpretations of that byte - it was displayed in three different formats.
Since you are using MFC, consider using the TRACE macro and looking at the output in the IDE. It will let you play with the formatting options. Here is code that will display the same byte in three different formats in the output window of the Visual Studio IDE :
TRACE( "decimal format is : %d\n", myByte );
TRACE( "hexadec format is : %02X\n", myByte );
TRACE( "ASCII format is : %c\n", myByte );
Note that this is the same piece of data displayed three different ways and it has the SAME value in each case.