【问题标题】:equivalent of c# bitconverter in delphi相当于delphi中的c#bitconverter
【发布时间】:2015-11-11 19:44:52
【问题描述】:

在 Delphi 中是否有等效的 bitconverter.getbytes?

https://msdn.microsoft.com/en-us/library/fk3sts66(v=vs.110).aspx

【问题讨论】:

    标签: delphi delphi-7 bitconverter


    【解决方案1】:

    您可以使用简单的演员表。使用与 Remy 相同的类型,如下所示:

    var
      value: Smallint;
      arr: array[0..SizeOf(Smallint)-1] of Byte;
    begin
      value := ...; 
      // by value cast:
      Smallint(arr) := value;
      // or by address cast:
      PSmallint(@arr)^ := value;
    end;
    

    或者这个:

    var
      value: Smallint;
      arr: TBytes;
    begin
      value := ...; 
      SetLength(arr, SizeOf(value));
      PSmallint(arr)^ := value;
    end;
    

    【讨论】:

      【解决方案2】:

      只需将Move()输入变量转换成合适大小的字节数组即可,例如:

      var
        value: Smallint;
        arr: array[0..SizeOf(Smallint)-1] of Byte;
      begin
        value := ...; 
        Move(value, arr[0], SizeOf(value));
      end;
      

      或者:

      type
        TBytes = array of Byte;
      
      function GetBytes(value: Smallint): TBytes;
      begin
        SetLength(Result, SizeOf(value));
        Move(value, Result[0], SizeOf(value));
      end;
      
      var
        value: Smallint;
        arr: TBytes;
      begin
        value := ...; 
        arr := GetBytes(value);
      end;
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-09-27
        • 1970-01-01
        • 2023-03-28
        相关资源
        最近更新 更多