在Delphi中将Byte数组转换为Integer

4 delphi

类型B02 =字节的数组[01..02];

...

var b:B02;

...

//这里我从tcp socket读取

socket.ReadBuffer(b,2);

问题是:如何将B02转换为整数?

Mas*_*ler 8

你可以在同一个内存位置声明一个Word/Smallint,如下所示:

var
  b : B02;
  myInt: smallint absolute B02;
Run Code Online (Sandbox Code Playgroud)

那么,有没有什么特别的原因你不只是创建smallint并将其传递给ReadBuffer而不是数组?我不知道你正在使用什么类,但这看起来很像你从TStream中读取的方式,它会接受任何类型的变量,以及字节大小.为什么不将你的缓冲区声明为你正在寻找的整数类型并切断中间人?

  • +1读我的想法.除非B02包含字符数据,否则任一解决方案都会回答问题. (2认同)

Rem*_*mko 5

你可以直接投射它:

var
  a: array[01..02] of Byte;
  i: Integer;
begin
  i := PWORD(@a)^;
end;
Run Code Online (Sandbox Code Playgroud)

或者如果您需要更改字节顺序:

  i := Swap(PWORD(@a)^);
Run Code Online (Sandbox Code Playgroud)