Email: Password: Remember Me | Create Account (Free)

Back to Subject List

Old thread has been locked -- no new posts accepted in this thread
???
05/07/08 22:34
Read: times


 
#154553 - C does know ASCII
Responding to: ???'s previous message
Chris Bertrand said:
it kept messing me up because if the 'B' was getting the ASCII value

The C programming language will always interpret a single-character constant such as 'B' using the character encoding of the underlying architecture - which usually happens to be ASCII.

Thus Brett's code
unsigned char Hex2Ascii(unsigned char HexValue)
{
   HexValue &= 0x0F;            // Mask-off the upper nibble

   if (HexValue <= 0x09)        // For values 0x00 - 0x09
   {
      return(HexValue + 0x30);  // Return the ascii code for the digits
   }
   else                         // For values 0x0A - 0x0F 
   {
      return(HexValue + 0x37);  // Return the upper case ascii codes
   }
}
Could equally be written
unsigned char Hex2Ascii(unsigned char HexValue)
{
   HexValue &= 0x0F;            // Mask-off the upper nibble

   if (HexValue <= 0x09)        // For values 0x00 - 0x09
   {
      return(HexValue + '0');   // Return the ascii code for the digits
   }
   else                         // For values 0x0A - 0x0F 
   {
      return((HexValue-10) + 'A');   // Return the upper case ascii codes
   }
}
In fact, in many ways that's preferably - as it's clear that it's characters that are required rather than just "magic numbers" 0x30 & 0x37...


List of 35 messages in thread
TopicAuthorDate
Problem with the toascii() w/ clarification            01/01/70 00:00      
   toascii not what you want            01/01/70 00:00      
      Ah yes.....makes sense            01/01/70 00:00      
         C does know ASCII            01/01/70 00:00      
            the final result:            01/01/70 00:00      
               That is a LOT of code            01/01/70 00:00      
                  It won't compile in its state because...            01/01/70 00:00      
               Grossly inefficient!            01/01/70 00:00      
                  A small trick            01/01/70 00:00      
                     small trick is cool.....            01/01/70 00:00      
                        Same as Neil's            01/01/70 00:00      
                           Ah makes sense.....            01/01/70 00:00      
                              You can still do better            01/01/70 00:00      
                                 LOL....Russ.......LOL            01/01/70 00:00      
                                    sprintf()            01/01/70 00:00      
                                       I had you at <>            01/01/70 00:00      
                                          So why not sprintf()?            01/01/70 00:00      
                                             You are right......I did say that            01/01/70 00:00      
                        How the small trick works            01/01/70 00:00      
                           Is it worth it?            01/01/70 00:00      
                              Same assembly generated for me            01/01/70 00:00      
                           You said index.....click click....very nice            01/01/70 00:00      
                              fast (sic?) lookup table            01/01/70 00:00      
                                 Faster? Probably not.            01/01/70 00:00      
               What's in a name?            01/01/70 00:00      
                  true.....but at this point.......            01/01/70 00:00      
                     Tricks and treats            01/01/70 00:00      
                     there is no time lost by doing it right            01/01/70 00:00      
                        You guys are completely right,            01/01/70 00:00      
                           the very simple way to (almost) do it right            01/01/70 00:00      
                           For the sake of learning            01/01/70 00:00      
                              Good point            01/01/70 00:00      
   UART doesn't know ASCII            01/01/70 00:00      
      Good point....but            01/01/70 00:00      
   Unhelpful documentation            01/01/70 00:00      

Back to Subject List