我正在尝试将66位值转换为十进制。
我注意到int64中delphi中最大的数据类型只能允许64位数据。 这种转换的delphi代码的例子是
result := strtoInt64('FFFFABCDEFF123456');
请告知如何使用delphi而不返回范围错误。
慕达
答案 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)