delphi - 如何快速将数字字符数组转换为整数?

标签 delphi performance

情况:以十六进制形式保存在字节数组(TBytes)中的整数。通过较少的复制将该数字转换为整数类型,如果可能的话,无需任何复制。

这是一个例子:

array = ($35, $36, $37);

这是 ansi 中的“5”、“6”、“7”。如何更轻松地将其转换为 567(=$273)?

我复制了两次。是否可以做得更快?怎么办?

最佳答案

您可以使用LookUp Table代替HexToInt...

此过程仅适用于 AnsiChars,当然不提供错误检查!

var
  Table        :array[byte]of byte;

procedure InitLookupTable;
var
  n:            integer;
begin
  for n := 0 to Length(Table) do
    case n of
      ord('0')..ord('9'): Table[n] := n - ord('0');
      ord('A')..ord('F'): Table[n] := n - ord('A') + 10;
      ord('a')..ord('f'): Table[n] := n - ord('a') + 10;
    else Table[n] := 0;
    end;
end;

function HexToInt(var hex: TBytes): integer;
var
  n:            integer;
begin
  result := 0;
  for n := 0 to Length(hex) -1 do
    result := result shl 4 + Table[ord(hex[n])];
end;

关于delphi - 如何快速将数字字符数组转换为整数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5135299/

相关文章:

delphi - 如何查询 "Size on disk"文件信息?

Delphi通过未知类类型选择对象

delphi - 使用 XML 数据绑定(bind)时生成复杂类型的问题

delphi - XE2和XE的IDE快捷键区别

c++ - "real world"我期望的多线程性能改进是多少?

Python 性能 : search large list vs sqlite

performance - 为什么 AngularFire 比普通的 Firebase API 慢这么多

r - 在 R 中的另一个函数中定义和调用一个函数有什么好处?

delphi - 异常打开 TAdoDataset : Arguments are of the wrong type, 超出可接受的范围,或者相互冲突

mysql - my.cnf 5GB MYISAM 表的 MySQL 性能