应用场景
有时候一段字节数组,中间一部分是我们不需要的,需要剪切删除掉他。原理是提取头与尾,最后做拼接。
函数代码
function SliceByteArray(const B: array of Byte; Start, Len: Integer):TBytes;
begin
if Start < 0 then
Start := 0;
if Len < 0 then
Len := 0
else if Start >= Length(B) then
Len := 0
else if Start + Len > Length(B) then
Len := Length(B) - Start;
SetLength(Result, Len);
if Len > 0 then
Move(B[Start], Result[0], Len);
end;
procedure AppendByteArray(var B1: TBytes; const B2: array of Byte);
var
OldB1Len: Integer;
begin
if Length(B2) = 0 then
Exit;
OldB1Len := Length(B1);
SetLength(B1, OldB1Len + Length(B2));
Move(B2[0], B1[OldB1Len], Length(B2));
end;
function CloneByteArray(const B: array of Byte): TBytes;
begin
SetLength(Result, Length(B));
if Length(B) > 0 then
Move(B[0], Result[0], Length(B));
end;
function ConcatByteArrays(const B1, B2: array of Byte): TBytes;
begin
Result := CloneByteArray(B1);
AppendByteArray(Result, B2);
end;
function ChopByteArray(const B: array of Byte; Start, Len: Integer):
TBytes;
var
First, Last: TBytes;
begin
if Start < 0 then
Start := 0;
if Len < 0 then
Len := 0
else if Start >= Length(B) then
Len := 0
else if Start + Len > Length(B) then
Len := Length(B) - Start;
First := SliceByteArray(B, 0, Start);
Last := SliceByteArray(B, Start + Len, Length(B));
Result := ConcatByteArrays(First, Last);
end;
测试
procedure TForm1.Button1Click(Sender: TObject);
var
B1, B2: Tbytes;
begin
B1:= BytesOf('123456');
B2:= ChopByteArray(B1, 2, 3);
Caption:= StringOf(B2);
end;
···
本文介绍了几个关于字节数组的操作函数,包括SliceByteArray用于剪切数组,AppendByteArray用于拼接数组,CloneByteArray用于复制数组,以及ChopByteArray用于根据指定位置和长度删除数组中间部分。提供的代码示例展示了如何在Delphi环境下实现这些功能。
&spm=1001.2101.3001.5002&articleId=129800041&d=1&t=3&u=fd7d020d96204d3da9dfc2b5c01b6cb1)
5181

被折叠的 条评论
为什么被折叠?



