zoukankan      html  css  js  c++  java
  • 转换 Byte 数组到 ... 回复 "高群" 的问题


    问题来源: http://www.cnblogs.com/del/archive/2009/03/21/1410030.html#1483614

    {转换 TBytes 到 Integer}
    procedure TForm1.Button1Click(Sender: TObject);
    var
      bs: TBytes; {TBytes 就是 Byte 的动态数组}
      i: Integer;
    begin
      {它应该和 Integer 一样大小才适合转换}
      SetLength(bs, 4);
      bs[0] := $10;
      bs[1] := $27;
      bs[2] := 0;
      bs[3] := 0;
    
      {因为 TBytes 是动态数组, 所以它的变量 bs 是个指针; 所以先转换到 PInteger}
      i := PInteger(bs)^;
      ShowMessage(IntToStr(i)); {10000}
    end;
    
    {从 Bytes 静态数组到 Integer 的转换会方便些}
    procedure TForm1.Button2Click(Sender: TObject);
    var
      bs: array[0..3] of Byte;
      i: Integer;
    begin
      bs[0] := $10;
      bs[1] := $27;
      bs[2] := 0;
      bs[3] := 0;
    
      i := Integer(bs);
      ShowMessage(IntToStr(i)); {10000}
    end;
    
    {转换到自定义的结构}
    procedure TForm1.Button3Click(Sender: TObject);
    type
      TData = packed record
        a: Integer;
        b: Word;
      end;
    var
      bs: array[0..5] of Byte; {这个数组应该和结构大小一直}
      data: TData;
    begin
      FillChar(bs, Length(bs), 0);
      bs[0] := $10;
      bs[1] := $27;
    
      data := TData(bs);
      ShowMessage(IntToStr(data.a)); {10000}
    end;
    
    {转换给自定义结构的一个成员}
    procedure TForm1.Button4Click(Sender: TObject);
    type
      TData = packed record
        a: Integer;
        b: Word;
      end;
    var
      bs: array[0..3] of Byte;
      data: TData;
    begin
      FillChar(bs, Length(bs), 0);
      bs[0] := $10;
      bs[1] := $27;
    
      data.a := Integer(bs);
      ShowMessage(IntToStr(data.a)); {10000}
    end;
    
  • 相关阅读:
    ARM六种寻址方式的汇编实现
    生产者消费者
    哲学家问题
    linux进程的问题
    linux信号量使用
    linux进程创建
    Ubuntu下编写C语言程序
    Android使用图表库简单教程
    不需要SDK调用图灵机器人的方法
    robotframework接口测试实例
  • 原文地址:https://www.cnblogs.com/del/p/1418658.html
Copyright © 2011-2022 走看看