我的应用程序必须对十六进制值进行操作。
例如,
如果用户提供的输入是
 0010F750',那么我的应用程序会告诉您用户哪个是最接近的值(来自某些预先定义的值)并通过添加&#给出下一个值39; 0000E500'
我们如何执行Hexa Decimal操作查找最接近,添加,减去DELPHI?
答案 0 :(得分:6)
对十六进制值执行操作并不意味着什么。数字是数字。十六进制仅仅是使用基数16的表示。
您需要做的就是将这些十六进制字符串转换为整数,您可以使用标准算术运算。
function HexStrToInt(const str: string): Integer;
begin
Result := StrToInt('$' + str);
end;
使用+
和-
进行加减。使用IntToHex
将值表示为十六进制表示。
答案 1 :(得分:3)
您的应用程序没有也无法对十六进制值进行操作"。相反,它对存储在以字节组织的数据块中的二进制值进行操作。
用户看到的内容以及与PROGRAM合作的内容是两个完全不相关的内容。
二进制的第一个(1)是00000001,十六进制是01,十进制是1,ASCII的十六进制值是31.尝试打印Ord的值(' 1')
您需要将数据的外部表示(以十六进制形式)转换为内部表示形式(整数)。那是大卫早先指出的。
然后您需要应用"舍入"到数值,然后将其转换回十六进制字符串供用户查看。
搜索可以让您实施简单计算器的示例,并且您将更好地理解。