Delphi编程将66位值(Hex)转换为Decimal

时间:2011-05-31 14:51:20

标签: delphi data-structures bit-manipulation

  

可能重复:
  Large numbers in Pascal (Delphi)

我正在尝试将66位值转换为十进制。

我注意到int64中delphi中最大的数据类型只能允许64位数据。 这种转换的delphi代码的例子是

result := strtoInt64('FFFFABCDEFF123456');

请告知如何使用delphi而不返回范围错误。

慕达

2 个答案:

答案 0 :(得分:4)

Delphi中的十进制称为currency,它使用8个字节= 64位。

您必须创建自己的类型,请参阅此文章:http://www.delphi3000.com/articles/article_3772.asp
它描述了如何创建128位整数。

这是Delphi的bignum lib:http://cc.embarcadero.com/item/27789
另请参阅此问题:Large numbers in Pascal (Delphi)

答案 1 :(得分:1)

如果您能承受一些舍入错误,可以使用Extended类型。这是一个简单的解决方案。我记得在某个地方读过它不再支持64位Delphi,所以如果可以避免的话,我个人不会使用它。

无论如何,你真的想对你的号码进行计算吗?你确定你不只是想拥有一个数组(例如字节)吗?如果是这种情况,您应该查看HexToBin()

文档:http://docwiki.embarcadero.com/VCL/en/Classes.HexToBin

您可以在其中看到它的示例:http://docwiki.embarcadero.com/CodeExamples/en/HexEncoding_(Delphi)