【发布时间】: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
在 Delphi 中是否有等效的 bitconverter.getbytes?
https://msdn.microsoft.com/en-us/library/fk3sts66(v=vs.110).aspx
【问题讨论】:
标签: delphi delphi-7 bitconverter
您可以使用简单的演员表。使用与 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;
【讨论】:
只需将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;
【讨论】: