相当于delphi中的c#bitconverter
问题描述:
在Delphi中有没有相当于bitconverter.getbytes?相当于delphi中的c#bitconverter
https://msdn.microsoft.com/en-us/library/fk3sts66(v=vs.110).aspx
答
只需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;
答
可以使用一个简单的转换。使用相同类型的雷米,看起来像这样:
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;