【问题标题】:Delphi, Copy string to Byte arrayDelphi,将字符串复制到字节数组
【发布时间】:2009-12-01 06:32:35
【问题描述】:

我有什么作品,但我正在寻找是否有更快的方法将字符串复制到 pByteArray 中

来自 sysutils

  PByteArray = ^TByteArray;
  TByteArray = array[0..32767] of Byte;

假设 as 设置正确

 a:   pByteArray;
 s:   string;

有没有一种快速的方法来做到这一点,例如复制

  for i := 1 TO Length(s) - 1 do
   a^[i] := Ord(s[i]);

德尔福7

【问题讨论】:

    标签: delphi string bytearray delphi-7


    【解决方案1】:

    小心使用移动。如果您使用的是 Delphi 2009,它可能会失败。相反,使用这个:

    移动(s[1], a^, Length(s) * SizeOf(Char));

    您也可以使用 SysUtils.pas 中的 TEncoding 类(仅限 Delphi 2009/2010++)来执行任务。

    【讨论】:

    • 如果长度为零,则不会执行 for 循环。要完全等效,您需要添加检查 if 长度。已添加。
    【解决方案2】:

    你可以简单地投射它:

      a := @s[1];
    

    反之亦然:

      s := PChar(a);
    

    【讨论】:

    • 这不会复制任何东西,它会让a 指向与它的类型不同的东西。
    • True(我假设目的是将字符串作为字节数组访问,反之亦然)
    【解决方案3】:

    没关系,找到了

     Move(s[1], a^, Length(s));
    

    【讨论】:

    • 记得检查 Length(s)
    【解决方案4】:

    我认为你可以像在这个example 中一样使用move 程序

    【讨论】:

      猜你喜欢
      • 2015-03-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-04
      • 2018-05-01
      • 1970-01-01
      • 2011-12-14
      相关资源
      最近更新 更多