如何在 Delphi 中将字节数组转换为 PByte?
How to convert array of Byte to PByte in Delphi?
我用的是Delphi 5.我定义了一个byte数组,如下:
Buffer: Array of BYTE;
如何转换为PByte指针?
两种方法:
var
P: PByte;
....
P := @Buffer[0]; // no cast, compiler can check type safety
P := PByte(Buffer); // implementation detail, dynamic array variable is pointer to first element
请注意,如果启用范围检查且数组为空,前者会导致范围错误。因此我倾向于后者,尽管您可能会批评直接指针类型转换缺乏类型安全性。
动态数组是作为指针实现的,所以你可以简单地type-cast它as-is:
var
Buffer: array of Byte;
P: PByte;
begin
SetLength(Buffer, ...);
P := PByte(Buffer);
...
end;
如果你不想依赖这个实现细节,你可以取数组中第一个字节的内存地址:
P := @Buffer[0];
我用的是Delphi 5.我定义了一个byte数组,如下:
Buffer: Array of BYTE;
如何转换为PByte指针?
两种方法:
var
P: PByte;
....
P := @Buffer[0]; // no cast, compiler can check type safety
P := PByte(Buffer); // implementation detail, dynamic array variable is pointer to first element
请注意,如果启用范围检查且数组为空,前者会导致范围错误。因此我倾向于后者,尽管您可能会批评直接指针类型转换缺乏类型安全性。
动态数组是作为指针实现的,所以你可以简单地type-cast它as-is:
var
Buffer: array of Byte;
P: PByte;
begin
SetLength(Buffer, ...);
P := PByte(Buffer);
...
end;
如果你不想依赖这个实现细节,你可以取数组中第一个字节的内存地址:
P := @Buffer[0];