相关疑难解决方法(0)

在delphi中使用UIntToStr来显示UINT64值,但StrToUInt在哪里允许用户输入64位无符号值?

我想将一个大的64位值从十进制或十六进制字符串转换为64位UINT64数据类型.有一个UIntToStr可以帮助将UINT64转换为字符串,但没有办法将64位整数转换为无符号值,作为字符串.这意味着使用RTL不能用十进制或十六进制表示大于2**63的整数值.这通常不是什么大问题,但是可能发生用户需要输入一个值,作为无符号整数,必须作为64位无符号整数值存储到注册表中.

procedure HandleLargeHexValue;

var
 x:UINT64;
begin

  x := $FFFFFFFFFFFFFFFE;

  try
  x := StrToInt('$FFFFFFFFFFFFFFFF'); // range error.
  except
    x := $FFFFFFFFFFFFFFFD;
  end;

  Caption := UintToStr(x);

end;
Run Code Online (Sandbox Code Playgroud)

Update Val现在可以在Delphi XE4及更高版本中正常运行.在XE3及以下Val('$ FFFFFFFFFFFFFFFF')有效,但不是Val('9223372036854775899').正如Roeland在Quality Central 108740中指出的那样:在Delphi XE4之前,System.Val在十进制中存在大的UInt64值问题.

delphi delphi-xe

10
推荐指数
1
解决办法
3216
查看次数

在delphi中将hex str转换为十进制值

我有一个问题,用Delphi转换整数值的十六进制值的字符串表示.

例如:

当我使用该功能时,$ FC75B6A9D025CB16给我802829546:

Abs(StrToInt64('$FC75B6A9D025CB16'))
Run Code Online (Sandbox Code Playgroud)

但如果我使用Windows的calc程序,结果是:18191647110290852630

所以我的问题是:谁是对的?我,还是钙?

有人有这种问题吗?

delphi hex decimal valueconverter delphi-6

8
推荐指数
3
解决办法
2万
查看次数

标签 统计

delphi ×2

decimal ×1

delphi-6 ×1

delphi-xe ×1

hex ×1

valueconverter ×1