Pascal

Moderators: None (Apply to moderate this forum)
Number of threads: 4095
Number of posts: 14004

This Forum Only
Post New Thread
Single Post View       Linear View       Threaded View      f

Report
Binary to decimal and Decimal to binary conversion Posted by darscute03 on 24 Apr 2009 at 5:16 AM
can anyone help me with this binary to decimal numbers then another one is decimal to binary tnx plus if you know something about binary to octal please help thanks
Report
Re: Binary to decimal and Decimal to binary conversion Posted by Atex on 24 Apr 2009 at 11:33 AM
: can anyone help me with this binary to decimal numbers then another
: one is decimal to binary tnx plus if you know something about binary
: to octal please help thanks
:

Decimal to binary ( and vice versa ) + binary to octal ( and vice versa ) demo (not the nicest code but works):
program dec_bin_oct;

const po2:array[0..7] of byte=(1,2,4,8,16,32,64,128); {powers of 2}
      bin:array[false..true] of char='01';
      oct:array[0..7] of char='01234567';

{Decimal to binary}
function dec2bin(b:byte):string;
 var s:string;
     i:byte;
 begin
  s:='';
  for i:=7 downto 0 do
   s:=s+bin[(po2[i] and b=po2[i])];
  dec2bin:=s;
 end;

{Binary ot decimal}
function bin2dec(s:string):byte;
 var l:byte absolute s; {lenght of s}
     i,b:byte;
 begin
  b:=0;
  while l<8 do s:=bin[false]+s;
  if l>8 then s:=copy(s,l-7,8);
  for i:=1 to l do
  if s[i]=bin[true] then b:=b+po2[8-i];
  bin2dec:=b;
 end;

{Binary to octal}
function bin2oct(b:string):string;
 var s:string;
     l:byte absolute b; {lenght of b}
     i:byte;
 begin
  while ((l mod 3)<>0) do b:=bin[false]+b;
  s:='';
  for i:=1 to (l div 3) do
   s:=s+oct[bin2dec(b[pred(i)*3+1]+b[pred(i)*3+2]+b[pred(i)*3+3])];
  bin2oct:=s;
 end;

{Octal to binary}
function oct2bin(b:string):string;
 var l:byte absolute b;
     i:byte;
     s:string;
 begin
  s:='';
  for i:=1 to l do
   s:=s+copy(dec2bin(ord(b[i])-48),6,3);
  oct2bin:=s;
 end;


var n:byte;

begin
 write(#13#10,'Enter a decimal :');readln(n);
 writeln(n,' in binary :',dec2bin(n),', in decimal :',bin2dec(dec2bin(n)));
 writeln(n,' in octal :',bin2oct(dec2bin(n)),' in binary: ',oct2bin(bin2oct(dec2bin(n))));
 readln;
end.

Report
Re: Binary to decimal and Decimal to binary conversion Posted by darscute03 on 30 Apr 2009 at 8:59 PM
haha tnx but can you explain me every line hahaha im little confuse about the program but it works i just cant explain how ...
Report
Re: Binary to decimal and Decimal to binary conversion Posted by darscute03 on 3 May 2009 at 5:34 AM
can you help me on this?how does this work?
Report
Re: Binary to decimal and Decimal to binary conversion Posted by Actor on 3 May 2009 at 11:18 AM
All data is stored in the computer in some sort of binary format. I assume that what you need is a way to convert that binary representation into a string of 1s and 0s representing the same thing. Converting integers to/from (machine) binary from/to a decimal string representation is accomplished in Pascal using the procedures Str and Val. This unit defines BinStr and BinVal which do the same for binary. OctStr and OctVal do the same for octal.
Unit StrVal ;

interface

   Procedure BinStr (i : Integer ; Var s : String) ;
   Procedure BinVal (s : String ;  Var i : Integer ; Var Code : Integer) ;
   Procedure OctStr (i : Integer ; Var s : String) ;
   Procedure OctVal (s : String ;  Var i : Integer ; Var Code : Integer) ;


implementation

   Procedure BinStr(i : Integer ; Var s : String) ;
   {
      convert an integer to a string in binary format
   }
   begin
      if i < 0 then begin
         i := -i ;
         Str(i, s) ;
         s := '-' + s
      end
      else begin 
         s := '' ;
         while i > 0 do begin
            if i MOD 2 > 0 then
               s := '1' + s
            else
               s := '0' + s ;
            i := i DIV 2
         end ;
         if Length (s) = 0 then
            s := '0'
      end ;
   end ;

   Procedure BinVal (s : String ; Var i : Integer ; Var Code : Integer) ;
   {
      convert a string in binary format to an integer
   }
   Var
      Sign, j, n  : Integer ;

   begin
      if s[1] IN ['+', '-', '0', '1'] then begin { is 1st char valid? }
         case s[i] of
            '-' : begin
                     Sign := -1 ;
                     n    := 2
                  end ;
            '+' : begin
                     Sign := 1 ;
                     n    := 2
                  end ;
            else  begin
                     Sign := 1 ;
                     n    := 1
                  end
         end ; { case }
         i := 0 ;
         for j := n to Length(s) do
            if s[j] IN ['0', '1'] then
               i := 2*i + Ord(s[j]) - Ord('0')
            else begin
               Code := j ;
               Exit
            end ;
         i := Sign * i
      end
      else begin
         i     := 0 ;
         Code  := 1
      end
   end ;

   Procedure OctStr(i : Integer ; Var s : String) ;
   {
      convert an integer to a string in octal format
   }
   begin
      if i < 0 then begin
         i := -i ;
         Str(i, s) ;
         s := '-' + s
      end
      else begin 
         s := '' ;
         while i > 0 do begin
            s := Chr((i MOD 8) + Ord('0')) + s ;
            i := i DIV 8
         end ;
         if Length (s) = 0 then
            s := '0'
      end ;
   end ;

   Procedure OctVal (s : String ; Var i : Integer ; Var Code : Integer) ;
   {
      convert a string in octal format to an integer
   }
   Var
      Sign, j, n  : Integer ;

   begin
      if s[1] IN ['+', '-', '0' .. '7'] then begin { is 1st char valid? }
         case s[i] of
            '-' : begin
                     Sign := -1 ;
                     n    := 2
                  end ;
            '+' : begin
                     Sign := 1 ;
                     n    := 2
                  end ;
            else  begin
                     Sign := 1 ;
                     n    := 1
                  end
         end ; { case }
         i := 0 ;
         for j := n to Length(s) do
            if s[j] IN ['0' .. '7'] then
               i := 8*i + Ord(s[j]) - Ord('0')
            else begin
               Code := j ;
               Exit
            end ;
         i := Sign * i
      end
      else begin
         i     := 0 ;
         Code  := 1
      end
   end ;

end.
Report
Re: Binary to decimal and Decimal to binary conversion Posted by Atex on 3 May 2009 at 5:56 PM
Binary is stored as a string of bits (0's and 1's) and each represent a value (power of 2).
Example:
Bit number: 7    6    5    4    3    2    1    0
Binary:     1    0    1    1    0    1    0    1
Values:    128   64   32   16   8    4    2    1 

Converting to decimal: 1*128 + 0*64 + 1*32 + 1*16 + 0*8 + 1*4 + 0*2 + 1*1 = 171
(because: 2^7=128, 2^6=64, 2^5=32....)

Converting a decimal to binary could be done with the aid of the
bitwise and or the mod (modulo) operator, the latter 
being more cpu intensive, therefore slower. Starting from the highest 
bit check for each bit, if set add 1 to output else 0
(e.g. if (value and 64=64) then {<-- bit6 is set} )
Octal numbers are a bit different but the idea is the same...
Binary to octal:
Bit number: 7    6    5    4    3    2    1    0
Binary:     1    0    1    1    0    1    0    1
At his point left pad the bits with 0's to have the length dividable by 3, adding 0's won't change it's value
So:  010110101  ( <-- added one 0 )
Next divide the binary string to pieces of 3, that's why we added 0's to make this possible
-->   010  110  101
Now convert these triplets into their decimal value:
 010 = 0*4 + 1*2 + 0*1 = 2
 110 = 1*4 + 1*2 + 0*1 = 6
 101 = 1*4 + 0*2 + 1*1 = 5
By concatenating these values results in the octal number: 265
To convert octal to binary use the same algorithm backwards...

Report
Re: Binary to decimal and Decimal to binary conversion Posted by ildar on 21 Oct 2012 at 9:26 AM
:))
{Binary to decimal
This function gets binary number as a String and will return decimaal number as an Integer}
function bin2dec(getal:String): Integer;
  var
    I: Integer;
    uitvoer : Integer;
    begin
    uitvoer := 0;
      for I := 0 to length(getal) -1 do
        begin
          if getal[length(getal) - I] = '1' then
           begin
             uitvoer := uitvoer + 1 shl (I);
           end;
      end;
      bin2dec:=uitvoer;
  end;

{Returns a string in which the character order of a specified string is reversed}
function ReverseString(S : String): String;
      var
      i : Integer;
        begin
        Result := '';
        For i := Length(S) DownTo 1 Do
          Begin
            Result := Result + Copy(S,i,1) ;
          End;
      End;

  {
 Decimaal to binary
 This function gets a decimal number as Integer and will return the binary number as a String
}
function dec2bin(getal:Integer): String;
  var
  uitvoer:String;
  getal_met_rest : Real;
  begin
  while getal > 0 do
    begin
        getal_met_rest := getal / 2;
        if frac(getal_met_rest) = 0
          then uitvoer := uitvoer + '0'
          else uitvoer := uitvoer + '1';
        getal := trunc(getal_met_rest);
    end;
  dec2bin:=ReverseString(uitvoer);
  end;

 {
 This function gets a decimal number as an Integer and will return the HEX number as a String
 }
function dec2hex(getal:Integer): String;
  var
  uitvoer: String;
  getal_met_rest : Real;
  S : Integer;
  begin
    while getal > 0 do
         begin
            getal_met_rest := getal / 16;
            S := getal - (trunc(getal_met_rest)*16);
            if S < 10 then uitvoer := uitvoer + IntToStr(S);
            if S = 10 then uitvoer := uitvoer + 'A';
            if S = 11 then uitvoer := uitvoer + 'B';
            if S = 12 then uitvoer := uitvoer + 'C';
            if S = 13 then uitvoer := uitvoer + 'D';
            if S = 14 then uitvoer := uitvoer + 'E';
            if S = 15 then uitvoer := uitvoer + 'F';
            getal := trunc(getal_met_rest);
         end;
    dec2hex:=ReverseString(uitvoer);
  end;

  {
 This function gets hex number as a String and will return the decimamaal number as an Integer
 }
 function hex2dec(getal: String) : Integer;
    var
    uitvoer: Integer;
    I: Integer;
    dec_number: Integer;
    begin
    uitvoer := 0;
    getal := ReverseString(getal);
      for I := 1 to length(getal) do
        begin
              if getal[I] = '1'  then dec_number := 1;
              if getal[I] = '2'  then dec_number := 2;
              if getal[I] = '3'  then dec_number := 3;
              if getal[I] = '4'  then dec_number := 4;
              if getal[I] = '5'  then dec_number := 5;
              if getal[I] = '6'  then dec_number := 6;
              if getal[I] = '7'  then dec_number := 7;
              if getal[I] = '8'  then dec_number := 8;
              if getal[I] = '9'  then dec_number := 9;
              if getal[I] = 'a'  then dec_number := 10;
              if getal[I] = 'A'  then dec_number := 10;
              if getal[I] = 'b'  then dec_number := 11;
              if getal[I] = 'B'  then dec_number := 11;
              if getal[I] = 'c'  then dec_number := 12;
              if getal[I] = 'C'  then dec_number := 12;
              if getal[I] = 'd'  then dec_number := 13;
              if getal[I] = 'D'  then dec_number := 13;
              if getal[I] = 'e'  then dec_number := 14;
              if getal[I] = 'E'  then dec_number := 14;
              if getal[I] = 'f'  then dec_number := 15;
              if getal[I] = 'F'  then dec_number := 15;

             uitvoer := uitvoer + (dec_number * trunc(Power(16, I-1)));
        end;
      hex2dec:=uitvoer;
    end;

 {
 This function gets a decimal number as an Integer and will return the octal number as a String
 }
function dec2oct(getal:Integer): String;
  var
  uitvoer: String;
  getal_met_rest : Real;
  begin
    while getal > 0 do
         begin
            getal_met_rest := getal / 8;
            uitvoer := uitvoer + IntToStr(getal - (trunc(getal_met_rest)*8));
            getal := trunc(getal_met_rest);
         end;
    dec2oct:=ReverseString(uitvoer);
  end;

 {
 This function gets octal number as a String and will return the decimamaal number as an Integer
 }
 function oct2dec(getal: String) : Integer;
    var
    uitvoer: Integer;
    I: Integer;
    begin
    uitvoer := 0;
    getal := ReverseString(getal);
      for I := 1 to length(getal) do
        begin
             uitvoer := uitvoer + (StrToInt(getal[I]) * trunc(Power(8, I-1)));
        end;
      oct2dec:=uitvoer;
    end;


Report
Re: Binary to decimal and Decimal to binary conversion Posted by ildar on 21 Oct 2012 at 9:28 AM
:))
{Binary to decimal
This function gets binary number as a String and will return decimaal number as an Integer}
function bin2dec(getal:String): Integer;
  var
    I: Integer;
    uitvoer : Integer;
    begin
    uitvoer := 0;
      for I := 0 to length(getal) -1 do
        begin
          if getal[length(getal) - I] = '1' then
           begin
             uitvoer := uitvoer + 1 shl (I);
           end;
      end;
      bin2dec:=uitvoer;
  end;

{Returns a string in which the character order of a specified string is reversed}
function ReverseString(S : String): String;
      var
      i : Integer;
        begin
        Result := '';
        For i := Length(S) DownTo 1 Do
          Begin
            Result := Result + Copy(S,i,1) ;
          End;
      End;

  {
 Decimaal to binary
 This function gets a decimal number as Integer and will return the binary number as a String
}
function dec2bin(getal:Integer): String;
  var
  uitvoer:String;
  getal_met_rest : Real;
  begin
  while getal > 0 do
    begin
        getal_met_rest := getal / 2;
        if frac(getal_met_rest) = 0
          then uitvoer := uitvoer + '0'
          else uitvoer := uitvoer + '1';
        getal := trunc(getal_met_rest);
    end;
  dec2bin:=ReverseString(uitvoer);
  end;

 {
 This function gets a decimal number as an Integer and will return the HEX number as a String
 }
function dec2hex(getal:Integer): String;
  var
  uitvoer: String;
  getal_met_rest : Real;
  S : Integer;
  begin
    while getal > 0 do
         begin
            getal_met_rest := getal / 16;
            S := getal - (trunc(getal_met_rest)*16);
            if S < 10 then uitvoer := uitvoer + IntToStr(S);
            if S = 10 then uitvoer := uitvoer + 'A';
            if S = 11 then uitvoer := uitvoer + 'B';
            if S = 12 then uitvoer := uitvoer + 'C';
            if S = 13 then uitvoer := uitvoer + 'D';
            if S = 14 then uitvoer := uitvoer + 'E';
            if S = 15 then uitvoer := uitvoer + 'F';
            getal := trunc(getal_met_rest);
         end;
    dec2hex:=ReverseString(uitvoer);
  end;

  {
 This function gets hex number as a String and will return the decimamaal number as an Integer
 }
 function hex2dec(getal: String) : Integer;
    var
    uitvoer: Integer;
    I: Integer;
    dec_number: Integer;
    begin
    uitvoer := 0;
    getal := ReverseString(getal);
      for I := 1 to length(getal) do
        begin
              if getal[I] = '1'  then dec_number := 1;
              if getal[I] = '2'  then dec_number := 2;
              if getal[I] = '3'  then dec_number := 3;
              if getal[I] = '4'  then dec_number := 4;
              if getal[I] = '5'  then dec_number := 5;
              if getal[I] = '6'  then dec_number := 6;
              if getal[I] = '7'  then dec_number := 7;
              if getal[I] = '8'  then dec_number := 8;
              if getal[I] = '9'  then dec_number := 9;
              if getal[I] = 'a'  then dec_number := 10;
              if getal[I] = 'A'  then dec_number := 10;
              if getal[I] = 'b'  then dec_number := 11;
              if getal[I] = 'B'  then dec_number := 11;
              if getal[I] = 'c'  then dec_number := 12;
              if getal[I] = 'C'  then dec_number := 12;
              if getal[I] = 'd'  then dec_number := 13;
              if getal[I] = 'D'  then dec_number := 13;
              if getal[I] = 'e'  then dec_number := 14;
              if getal[I] = 'E'  then dec_number := 14;
              if getal[I] = 'f'  then dec_number := 15;
              if getal[I] = 'F'  then dec_number := 15;

             uitvoer := uitvoer + (dec_number * trunc(Power(16, I-1)));
        end;
      hex2dec:=uitvoer;
    end;

 {
 This function gets a decimal number as an Integer and will return the octal number as a String
 }
function dec2oct(getal:Integer): String;
  var
  uitvoer: String;
  getal_met_rest : Real;
  begin
    while getal > 0 do
         begin
            getal_met_rest := getal / 8;
            uitvoer := uitvoer + IntToStr(getal - (trunc(getal_met_rest)*8));
            getal := trunc(getal_met_rest);
         end;
    dec2oct:=ReverseString(uitvoer);
  end;

 {
 This function gets octal number as a String and will return the decimamaal number as an Integer
 }
 function oct2dec(getal: String) : Integer;
    var
    uitvoer: Integer;
    I: Integer;
    begin
    uitvoer := 0;
    getal := ReverseString(getal);
      for I := 1 to length(getal) do
        begin
             uitvoer := uitvoer + (StrToInt(getal[I]) * trunc(Power(8, I-1)));
        end;
      oct2dec:=uitvoer;
    end;


Report
Re: Binary to decimal and Decimal to binary conversion Posted by ildar on 21 Oct 2012 at 9:32 AM
:))
{Binary to decimal
This function gets binary number as a String and will return decimaal number as an Integer}
function bin2dec(getal:String): Integer;
  var
    I: Integer;
    uitvoer : Integer;
    begin
    uitvoer := 0;
      for I := 0 to length(getal) -1 do
        begin
          if getal[length(getal) - I] = '1' then
           begin
             uitvoer := uitvoer + 1 shl (I);
           end;
      end;
      bin2dec:=uitvoer;
  end;

{Returns a string in which the character order of a specified string is reversed}
function ReverseString(S : String): String;
      var
      i : Integer;
        begin
        Result := '';
        For i := Length(S) DownTo 1 Do
          Begin
            Result := Result + Copy(S,i,1) ;
          End;
      End;

  {
 Decimaal to binary
 This function gets a decimal number as Integer and will return the binary number as a String
}
function dec2bin(getal:Integer): String;
  var
  uitvoer:String;
  getal_met_rest : Real;
  begin
  while getal > 0 do
    begin
        getal_met_rest := getal / 2;
        if frac(getal_met_rest) = 0
          then uitvoer := uitvoer + '0'
          else uitvoer := uitvoer + '1';
        getal := trunc(getal_met_rest);
    end;
  dec2bin:=ReverseString(uitvoer);
  end;

 {
 This function gets a decimal number as an Integer and will return the HEX number as a String
 }
function dec2hex(getal:Integer): String;
  var
  uitvoer: String;
  getal_met_rest : Real;
  S : Integer;
  begin
    while getal > 0 do
         begin
            getal_met_rest := getal / 16;
            S := getal - (trunc(getal_met_rest)*16);
            if S < 10 then uitvoer := uitvoer + IntToStr(S);
            if S = 10 then uitvoer := uitvoer + 'A';
            if S = 11 then uitvoer := uitvoer + 'B';
            if S = 12 then uitvoer := uitvoer + 'C';
            if S = 13 then uitvoer := uitvoer + 'D';
            if S = 14 then uitvoer := uitvoer + 'E';
            if S = 15 then uitvoer := uitvoer + 'F';
            getal := trunc(getal_met_rest);
         end;
    dec2hex:=ReverseString(uitvoer);
  end;

  {
 This function gets hex number as a String and will return the decimamaal number as an Integer
 }
 function hex2dec(getal: String) : Integer;
    var
    uitvoer: Integer;
    I: Integer;
    dec_number: Integer;
    begin
    uitvoer := 0;
    getal := ReverseString(getal);
      for I := 1 to length(getal) do
        begin
              if getal[I] = '1'  then dec_number := 1;
              if getal[I] = '2'  then dec_number := 2;
              if getal[I] = '3'  then dec_number := 3;
              if getal[I] = '4'  then dec_number := 4;
              if getal[I] = '5'  then dec_number := 5;
              if getal[I] = '6'  then dec_number := 6;
              if getal[I] = '7'  then dec_number := 7;
              if getal[I] = '8'  then dec_number := 8;
              if getal[I] = '9'  then dec_number := 9;
              if getal[I] = 'a'  then dec_number := 10;
              if getal[I] = 'A'  then dec_number := 10;
              if getal[I] = 'b'  then dec_number := 11;
              if getal[I] = 'B'  then dec_number := 11;
              if getal[I] = 'c'  then dec_number := 12;
              if getal[I] = 'C'  then dec_number := 12;
              if getal[I] = 'd'  then dec_number := 13;
              if getal[I] = 'D'  then dec_number := 13;
              if getal[I] = 'e'  then dec_number := 14;
              if getal[I] = 'E'  then dec_number := 14;
              if getal[I] = 'f'  then dec_number := 15;
              if getal[I] = 'F'  then dec_number := 15;

             uitvoer := uitvoer + (dec_number * trunc(Power(16, I-1)));
        end;
      hex2dec:=uitvoer;
    end;

 {
 This function gets a decimal number as an Integer and will return the octal number as a String
 }
function dec2oct(getal:Integer): String;
  var
  uitvoer: String;
  getal_met_rest : Real;
  begin
    while getal > 0 do
         begin
            getal_met_rest := getal / 8;
            uitvoer := uitvoer + IntToStr(getal - (trunc(getal_met_rest)*8));
            getal := trunc(getal_met_rest);
         end;
    dec2oct:=ReverseString(uitvoer);
  end;

 {
 This function gets octal number as a String and will return the decimamaal number as an Integer
 }
 function oct2dec(getal: String) : Integer;
    var
    uitvoer: Integer;
    I: Integer;
    begin
    uitvoer := 0;
    getal := ReverseString(getal);
      for I := 1 to length(getal) do
        begin
             uitvoer := uitvoer + (StrToInt(getal[I]) * trunc(Power(8, I-1)));
        end;
      oct2dec:=uitvoer;
    end;


Report
Re: Binary to decimal and Decimal to binary conversion Posted by ildar on 21 Oct 2012 at 9:35 AM
:))
{Binary to decimal
This function gets binary number as a String and will return decimaal number as an Integer}
function bin2dec(getal:String): Integer;
  var
    I: Integer;
    uitvoer : Integer;
    begin
    uitvoer := 0;
      for I := 0 to length(getal) -1 do
        begin
          if getal[length(getal) - I] = '1' then
           begin
             uitvoer := uitvoer + 1 shl (I);
           end;
      end;
      bin2dec:=uitvoer;
  end;

{Returns a string in which the character order of a specified string is reversed}
function ReverseString(S : String): String;
      var
      i : Integer;
        begin
        Result := '';
        For i := Length(S) DownTo 1 Do
          Begin
            Result := Result + Copy(S,i,1) ;
          End;
      End;

  {
 Decimaal to binary
 This function gets a decimal number as Integer and will return the binary number as a String
}
function dec2bin(getal:Integer): String;
  var
  uitvoer:String;
  getal_met_rest : Real;
  begin
  while getal > 0 do
    begin
        getal_met_rest := getal / 2;
        if frac(getal_met_rest) = 0
          then uitvoer := uitvoer + '0'
          else uitvoer := uitvoer + '1';
        getal := trunc(getal_met_rest);
    end;
  dec2bin:=ReverseString(uitvoer);
  end;

 {
 This function gets a decimal number as an Integer and will return the HEX number as a String
 }
function dec2hex(getal:Integer): String;
  var
  uitvoer: String;
  getal_met_rest : Real;
  S : Integer;
  begin
    while getal > 0 do
         begin
            getal_met_rest := getal / 16;
            S := getal - (trunc(getal_met_rest)*16);
            if S < 10 then uitvoer := uitvoer + IntToStr(S);
            if S = 10 then uitvoer := uitvoer + 'A';
            if S = 11 then uitvoer := uitvoer + 'B';
            if S = 12 then uitvoer := uitvoer + 'C';
            if S = 13 then uitvoer := uitvoer + 'D';
            if S = 14 then uitvoer := uitvoer + 'E';
            if S = 15 then uitvoer := uitvoer + 'F';
            getal := trunc(getal_met_rest);
         end;
    dec2hex:=ReverseString(uitvoer);
  end;

  {
 This function gets hex number as a String and will return the decimamaal number as an Integer
 }
 function hex2dec(getal: String) : Integer;
    var
    uitvoer: Integer;
    I: Integer;
    dec_number: Integer;
    begin
    uitvoer := 0;
    getal := ReverseString(getal);
      for I := 1 to length(getal) do
        begin
              if getal[I] = '1'  then dec_number := 1;
              if getal[I] = '2'  then dec_number := 2;
              if getal[I] = '3'  then dec_number := 3;
              if getal[I] = '4'  then dec_number := 4;
              if getal[I] = '5'  then dec_number := 5;
              if getal[I] = '6'  then dec_number := 6;
              if getal[I] = '7'  then dec_number := 7;
              if getal[I] = '8'  then dec_number := 8;
              if getal[I] = '9'  then dec_number := 9;
              if getal[I] = 'a'  then dec_number := 10;
              if getal[I] = 'A'  then dec_number := 10;
              if getal[I] = 'b'  then dec_number := 11;
              if getal[I] = 'B'  then dec_number := 11;
              if getal[I] = 'c'  then dec_number := 12;
              if getal[I] = 'C'  then dec_number := 12;
              if getal[I] = 'd'  then dec_number := 13;
              if getal[I] = 'D'  then dec_number := 13;
              if getal[I] = 'e'  then dec_number := 14;
              if getal[I] = 'E'  then dec_number := 14;
              if getal[I] = 'f'  then dec_number := 15;
              if getal[I] = 'F'  then dec_number := 15;

             uitvoer := uitvoer + (dec_number * trunc(Power(16, I-1)));
        end;
      hex2dec:=uitvoer;
    end;

 {
 This function gets a decimal number as an Integer and will return the octal number as a String
 }
function dec2oct(getal:Integer): String;
  var
  uitvoer: String;
  getal_met_rest : Real;
  begin
    while getal > 0 do
         begin
            getal_met_rest := getal / 8;
            uitvoer := uitvoer + IntToStr(getal - (trunc(getal_met_rest)*8));
            getal := trunc(getal_met_rest);
         end;
    dec2oct:=ReverseString(uitvoer);
  end;

 {
 This function gets octal number as a String and will return the decimamaal number as an Integer
 }
 function oct2dec(getal: String) : Integer;
    var
    uitvoer: Integer;
    I: Integer;
    begin
    uitvoer := 0;
    getal := ReverseString(getal);
      for I := 1 to length(getal) do
        begin
             uitvoer := uitvoer + (StrToInt(getal[I]) * trunc(Power(8, I-1)));
        end;
      oct2dec:=uitvoer;
    end;


Report
Re: Binary to decimal and Decimal to binary conversion Posted by ildar on 21 Oct 2012 at 9:44 AM
:))))


{Binary to decimal
This function gets binary number as a String and will return decimaal namber as an Integer}
function bin2dec(getal:String): Integer;
  var
    I: Integer;
    uitvoer : Integer;
    begin
    uitvoer := 0;
      for I := 0 to length(getal) -1 do
        begin
          if getal[length(getal) - I] = '1' then
           begin
             uitvoer := uitvoer + 1 shl (I);
           end;
      end;
      bin2dec:=uitvoer;
  end;

{Returns a string in which the character order of a specified string is reversed}
function ReverseString(S : String): String;
      var
      i : Integer;
        begin
        Result := '';
        For i := Length(S) DownTo 1 Do
          Begin
            Result := Result + Copy(S,i,1) ;
          End;
      End;

  {
 Decimaal to binary
 This function gets a decimal namber as Integer and will return the binary namber as a String
}
function dec2bin(getal:Integer): String;
  var
  uitvoer:String;
  getal_met_rest : Real;
  begin
  while getal > 0 do
    begin
        getal_met_rest := getal / 2;
        if frac(getal_met_rest) = 0
          then uitvoer := uitvoer + '0'
          else uitvoer := uitvoer + '1';
        getal := trunc(getal_met_rest);
    end;
  dec2bin:=ReverseString(uitvoer);
  end;

 {
 This function gets a decimal number as an Integer and will return the HEX number as a String
 }
function dec2hex(getal:Integer): String;
  var
  uitvoer: String;
  getal_met_rest : Real;
  S : Integer;
  begin
    while getal > 0 do
         begin
            getal_met_rest := getal / 16;
            S := getal - (trunc(getal_met_rest)*16);
            if S < 10 then uitvoer := uitvoer + IntToStr(S);
            if S = 10 then uitvoer := uitvoer + 'A';
            if S = 11 then uitvoer := uitvoer + 'B';
            if S = 12 then uitvoer := uitvoer + 'C';
            if S = 13 then uitvoer := uitvoer + 'D';
            if S = 14 then uitvoer := uitvoer + 'E';
            if S = 15 then uitvoer := uitvoer + 'F';
            getal := trunc(getal_met_rest);
         end;
    dec2hex:=ReverseString(uitvoer);
  end;

  {
 This function gets hex number as a String and will return the decimamaal number as an Integer
 }
 function hex2dec(getal: String) : Integer;
    var
    uitvoer: Integer;
    I: Integer;
    dec_number: Integer;
    begin
    uitvoer := 0;
    getal := ReverseString(getal);
      for I := 1 to length(getal) do
        begin
              if getal[I] = '1'  then dec_number := 1;
              if getal[I] = '2'  then dec_number := 2;
              if getal[I] = '3'  then dec_number := 3;
              if getal[I] = '4'  then dec_number := 4;
              if getal[I] = '5'  then dec_number := 5;
              if getal[I] = '6'  then dec_number := 6;
              if getal[I] = '7'  then dec_number := 7;
              if getal[I] = '8'  then dec_number := 8;
              if getal[I] = '9'  then dec_number := 9;
              if getal[I] = 'a'  then dec_number := 10;
              if getal[I] = 'A'  then dec_number := 10;
              if getal[I] = 'b'  then dec_number := 11;
              if getal[I] = 'B'  then dec_number := 11;
              if getal[I] = 'c'  then dec_number := 12;
              if getal[I] = 'C'  then dec_number := 12;
              if getal[I] = 'd'  then dec_number := 13;
              if getal[I] = 'D'  then dec_number := 13;
              if getal[I] = 'e'  then dec_number := 14;
              if getal[I] = 'E'  then dec_number := 14;
              if getal[I] = 'f'  then dec_number := 15;
              if getal[I] = 'F'  then dec_number := 15;

             uitvoer := uitvoer + (dec_number * trunc(Power(16, I-1)));
        end;
      hex2dec:=uitvoer;
    end;

 {
 This function gets a decimal number as an Integer and will return the octal number as a String
 }
function dec2oct(getal:Integer): String;
  var
  uitvoer: String;
  getal_met_rest : Real;
  begin
    while getal > 0 do
         begin
            getal_met_rest := getal / 8;
            uitvoer := uitvoer + IntToStr(getal - (trunc(getal_met_rest)*8));
            getal := trunc(getal_met_rest);
         end;
    dec2oct:=ReverseString(uitvoer);
  end;

 {
 This function gets octal number as a String and will return the decimamaal number as an Integer
 }
 function oct2dec(getal: String) : Integer;
    var
    uitvoer: Integer;
    I: Integer;
    begin
    uitvoer := 0;
    getal := ReverseString(getal);
      for I := 1 to length(getal) do
        begin
             uitvoer := uitvoer + (StrToInt(getal[I]) * trunc(Power(8, I-1)));
        end;
      oct2dec:=uitvoer;
    end;





 

Recent Jobs

Official Programmer's Heaven Blogs
Web Hosting | Browser and Social Games | Gadgets

Popular resources on Programmersheaven.com
Assembly | Basic | C | C# | C++ | Delphi | Flash | Java | JavaScript | Pascal | Perl | PHP | Python | Ruby | Visual Basic
© Copyright 2011 Programmersheaven.com - All rights reserved.
Reproduction in whole or in part, in any form or medium without express written permission is prohibited.
Violators of this policy may be subject to legal action. Please read our Terms Of Use and Privacy Statement for more information.
Operated by CommunityHeaven, a BootstrapLabs company.