这是我用来从数字数组和基值生成 UInt64 结果的函数。
function BaseNToInteger(const ABase: Cardinal; const ADigits: Array of Byte): UInt64;
var
i: Integer;
begin
Result := 0;
for i := 0 to (Length(ADigits) - 1) do begin
Result := Result + (ADigits[i] * Power(i, ABase));
end;
end;
[请不要担心那里的 Power() 函数;我已经编写了自己的使用基数并产生 UInt64 结果。]
这是简单的部分。
由于多年来我的数学技能似乎已经生锈,我正在努力解决的困难部分是:
1)对于给定的 UInt64 值,如何为给定的基值(其中基值> 1)生成 ADigits 数组?
2) 如何确定表示给定 UInt64 值的给定基值(其中基值 > 1)的 ADigits 数组的长度?