代码之家  ›  专栏  ›  技术社区  ›  mj2008

delphi相当于c的utoa

  •  1
  • mj2008  · 技术社区  · 15 年前

    有Delphi等价于c吗 utoa 函数,它允许我提供基数?我使用的是Delphi2007,必须读取一个以32为基数,以utoa命名的文件。我不想重新发明轮子,介绍我自己的错误。[编辑:]InttoStr的操作方式与InttoStr的操作方式相同,后者使用基数10,因此InttoStr的等效utoa为utoa(值,10);

    例如,整数100应返回值“34”。

    1 回复  |  直到 15 年前
        1
  •  3
  •   mj2008    15 年前

    嗯,我搜索了我的旧代码,找到了这个,它看起来很管用!

    function ItoA(value : Cardinal; Radix : Cardinal) : string;
    const
      acCharRef : array  [0 .. 35] of char
      = (
      '0', '1', '2', '3', '4', '5', '6', '7',
      '8', '9', 'A', 'B', 'C', 'D', 'E', 'F',
      'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N',
      'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V',
      'W', 'X', 'Y', 'Z'
      );
    var
      nIndex : Integer;
      szBuild : string;
    begin
            {* Now loop, taking each digit as modulo radix, and reducing the value
             * by dividing by radix, until the value is zeroed.  Note that
             * at least one loop occurs even if the value begins as 0,
             * since we want "0" to be generated rather than "".
             *}
      szBuild := '';
    
      repeat
        nIndex := value mod radix;
        szBuild := acCharRef[nIndex] + szBuild;
        value := value div radix;
      until value = 0;
    
      result := szBuild;
    end;