Saravana Santhosh
Saravana Santhosh

Reputation: 197

Operation on Hexadecimal DELPHI

My application has to do operation on Hexadecimal values.

For example,

If the input given by user is '0010F750', then my application will tell you the user which is the nearest value (from some set of pre defined values) and will give next value by adding '0000E500'.

How we can perform Hexa Decimal operations Find nearest, Add, Subtract from DELPHI?

Upvotes: 1

Views: 2993

Answers (2)

David Schwartz
David Schwartz

Reputation: 1838

Your application does not and cannot "do operation on Hexadecimal values". Rather, it operates on binary values stored in chunks of data organized as bytes.

What the USER sees and what the PROGRAM works with are two completely unrelated things.

The number one (1) in binary is 00000001, in hex is 01, in decimal is 1, and in ASCII has the hexadecimal value of 31. Try printing the value of Ord('1').

You need to convert the external representation of your data, in Hex, to an internal representation as an Integer. That's what David was pointing to earlier.

Then you'd need to apply your "rounding" to the numeric value, then convert it back to a Hex string for the user to see.

Search around for examples that let you implement a simple calculator and you'll understand better.

Upvotes: 3

David Heffernan
David Heffernan

Reputation: 612954

Performing operations on hexadecimal values does not really mean anything. Numbers are numbers. Hexadecimal is merely a representation using base 16.

All you need to do is convert these hex strings to integers and you can use standard arithmetic operations.

function HexStrToInt(const str: string): Integer;
begin 
  Result := StrToInt('$' + str);
end;

Add and subtract using + and -. Use IntToHex to express values as their hex representations.

Upvotes: 7

Related Questions