[Back to NUMBERS SWAG index] [Back to Main SWAG index] [Original]

    > I am learning Pascal and don't understand something.  How does the
    > following Function make a Word into Hex:

     It's Really doing two things, it's converting a binary value
     into ascii, and from decimal to hex.  Let's start With the
     calling or main part of the Program.  You're taking a 2 Byte
     Word and breaking it up into 4 nibbles of 4 bits each.  Each of
     these nibbles is displayed as a Single hex Character 0-F.

                                       Hex Representation XXXX
                                                          ||||
    HexStr := HexStr + Translate(Hi(W) shr 4); -----------||||
    HexStr := HexStr + Translate(Hi(W) and 15);------------|||
    HexStr := HexStr + Translate(Lo(W) shr 4); -------------||
    HexStr := HexStr + Translate(Lo(W) and 15);--------------|

    Now the translate Function simply converts the decimal value of
    the 4-bit nibble into an ascii hex value.  if you look at an
    ascii Chart you will see how this is done:

    '0' = 48   '5' = 53    'A' = 65
    '1' = 49   '6' = 54    'B' = 66
    '2' = 50   '7' = 55    'C' = 67
    '3' = 51   '8' = 56    'D' = 68
    '4' = 52   '9' = 57    'E' = 69
                           'F' = 70

    As you can see it easy For 0-9, you just add 48 to the value and
    it's converted, but when you go to convert 10 to A, you need to
    use a different offset, so For values above 9 you add 55.

    Function Translate(B : Byte) : Char;
      begin
      if B < 10 then
        Translate := Chr(B + 48)
      else
        Translate := Chr(B + 55);
      end;

[Back to NUMBERS SWAG index] [Back to Main SWAG index] [Original]