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

    {
    Hey, recently, I've developed a binary to integer, and integer to binary,
    conversion operations.  This is the fastest way that I know how to write this,
    short of assembly (which I do not know at current).  The original code was
    much longer, and much slower, yet it worked too, just slower.  If you have any
    suggestions, please let me know, I'm curious to see the results.  (And, please
    let me know if you find a use for this source.  Right now, I only use it in
    one of several units I've written, to view binary files.)

    My programming style is very organized, so it shouldn't be too hard to follow.

    ------------------------------ CUT HERE --------------------------------------}

    TYPE
        String8 = String[8];     { For Use With The Binary Conversion }
        String16 = String[16];   { For Use With The Binary Conversion }

        Conversions = Object
            Function Bin8ToInt ( X : String ) : Integer;
            Procedure IntToBin8 ( X : Integer; VAR Binary8 : String8 );
            End;                                            { OBJECT Conversions }

    { I only use OOP because it sits in a unit.  For a normal program, or an     }
    { easy to use unit, you don't even need these three lines.  I have more      }
    { conversion subprograms added to this object, which is why I have an        }
    { individual object for the conversion subprograms.                          }

    CONST
         Bits8 : Array [1..8] of Integer = (128, 64, 32, 16, 8, 4, 2, 1);

    { This defines a normal 8 bits.  I have a Bin16toInt and IntToBin16          }
    { procedure and function, retrorespectively, but I think that they do not    }
    { have any use to them.                                                      }

    {ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ}

    Function Conversions.Bin8ToInt ( X : String ) : Integer;

    { Purpose : Converts an 8-bit Binary "Number" to an Integer.                 }
    {           The 8-bit "Number" is really an 8-character string, or at least  }
    {           it should be.                                                    }

    VAR
       G, Total : Integer;

    Begin
         Total := 0;
         For G := 1 to 8 Do
             If ( X[G] = '1' ) then
                Total := Total + Bits8[G];
         Bin8ToInt := Total;

    End;                                        { FUNCTION Conversions.Bin8ToInt }
    {ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ}

    Procedure Conversions.IntToBin8 ( X : Integer;
                                      VAR Binary8 : String8 );

    { Purpose : Converts an integer (from 1 to 256) to an 8-bit Binary "integer."}
    {           The 8-bit "integer" is actually a string, easily convertable to  }
    {           an integer.                                                      }

    VAR
       G : Integer;

    Begin
         Binary8 := '00000000';
         For G := 1 to 8 Do
             If ( X >= Bits8[G] ) Then
                Begin
                     X := X - Bits8[G];
                     Binary8[G] := '1';
                     End;
         If ( X > 0 ) Then
            Binary8 := 'ERROR';

    End;                                       { PROCEDURE Conversions.IntToBin8 }
    {ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ}

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