Expiring Today—Celebrate National IT Professionals Day with 3 months of free Premium Membership. Use Code ITDAY17

x
?
Solved

Base Conversion Program

Posted on 2000-03-16
3
Medium Priority
?
245 Views
Last Modified: 2010-04-16
Hello
I am looking for a program which can convert Base type of given number.
Like convert hex to decimal, octal to hex, hex to octal,bin to hex etc..
A DOS version of program is OK.
Thanks in advance
Sollala
0
Comment
Question by:sollala
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 2
3 Comments
 
LVL 5

Expert Comment

by:scrapdog
ID: 2626267
The Calculator that ships with Windows is capable of this.  In the View menu, selected Scientific.
0
 

Author Comment

by:sollala
ID: 2626292
I know that calculator can do that, I want a Pascal Program which does this.
0
 
LVL 5

Accepted Solution

by:
scrapdog earned 200 total points
ID: 2626396
well, I just threw this program together, you can extract from it what you need


The function "convert" accepts three arguments:  the source number (in a string), the source base (1-16), and the target base(1-16).

It will between any of these (e.g. binary to octal, octal to hex, base 3 to base 15, etc., etc.) for a total of 256 possible conversions.

For example, to convert "123" decimal to octal, you would use the expression

convert('123',10,8);


*********************************


program base_converter;


const
  digits :string[16] = '0123456789ABCDEF';

function convert_digit(c :char) :integer;
var
  digit :integer;
begin
  digit := ord(upcase(c));
  if digit in [ord('0')..ord('9')] then
    digit := digit - ord('0')
  else if digit in [ord('A')..ord('F')] then
    digit := digit - ord('A') + 10
  else
    digit := -1;
  convert_digit := digit;
end;



function convert(s :string; source, target :integer) :string;
var
  decimal, place :longint;
  i,digit,d :integer;
  s2 :string;
  msd :boolean;
  error :boolean;
begin
  place := 1;
  decimal := 0;
  s2 := '';
  i := length(s);
  error := false;
  while (i > 0) and (not error) do begin
    digit := convert_digit(s[i]);
    if (digit < 0) or (digit >= source) then
      error := true
    else begin
      decimal := decimal + place * digit;
      place := place * source;
      dec(i);
    end;
  end;
  if not error then begin
    msd := false;
    place := 1;
    while place < decimal do place := place * target;
    while place > 0 do begin
      d := decimal div place;
      if (d <> 0) or msd then begin
        s2 := s2 + digits[d+1];
        msd := true;
      end;
      decimal := decimal mod place;
      place := place div target;
    end;
  end else
    s2 := '**ERROR: INVALID CHARACTER***';
  convert := s2;
end;

var
  source,target :integer;
  s :string;
begin
  write('Enter source base(1-16):'); readln(source);
  write('Enter target base(1-16):'); readln(target);
  write('Enter value:'); readln(s);
  writeln(convert(s,source,target));
  readln;
end.





0

Featured Post

[Webinar] Lessons on Recovering from Petya

Skyport is working hard to help customers recover from recent attacks, like the Petya worm. This work has brought to light some important lessons. New malware attacks like this can take down your entire environment. Learn from others mistakes on how to prevent Petya like worms.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Article by: Shawn
IT teams define success as solving problems quickly. To enable ITSM modernization we have to think of adopting the tools and methods that will enable resolution of ITSM issues more quickly.
Check out what's been happening in the Experts Exchange community.
In this video you will find out how to export Office 365 mailboxes using the built in eDiscovery tool. Bear in mind that although this method might be useful in some cases, using PST files as Office 365 backup is troublesome in a long run (more on t…
In this video, Percona Solution Engineer Dimitri Vanoverbeke discusses why you want to use at least three nodes in a database cluster. To discuss how Percona Consulting can help with your design and architecture needs for your database and infras…

718 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question