## Pascal

Moderators: None (Apply to moderate this forum)
Number of posts: 14016

This Forum Only

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
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
:

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
writeln(n,' in binary :',dec2bin(n),', in decimal :',bin2dec(dec2bin(n)));
writeln(n,' in octal :',bin2oct(dec2bin(n)),' in binary: ',oct2bin(bin2oct(dec2bin(n))));
end.
```

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 ...
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?
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.
```
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...
```

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;

```

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;

```

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;

```

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;

```

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