4 delphi
类型B02 =字节的数组[01..02];
...
var b:B02;
...
//这里我从tcp socket读取
socket.ReadBuffer(b,2);
问题是:如何将B02转换为整数?
你可以在同一个内存位置声明一个Word/Smallint,如下所示:
var
b : B02;
myInt: smallint absolute B02;
Run Code Online (Sandbox Code Playgroud)
那么,有没有什么特别的原因你不只是创建smallint并将其传递给ReadBuffer而不是数组?我不知道你正在使用什么类,但这看起来很像你从TStream中读取的方式,它会接受任何类型的变量,以及字节大小.为什么不将你的缓冲区声明为你正在寻找的整数类型并切断中间人?
你可以直接投射它:
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)