16,749
社区成员
发帖
与我相关
我的任务
分享
while size > 0 do
begin
R[0] := hextables[S^ shr 4];
R[1] := hextables[S^ and 3];
R[2] := #32;
Inc(S);
Inc(R, 3);
Dec(size);
end;
R[1] := hextables[S^ and 3];
改成:
R[1] := hextables[S^ and $F];
function Get(const buf; size: Integer): string;
const
align = 64;
align_size = align * 2 + align - 1;
hextables: PChar = '0123456789ABCDEF';
var
zerolen: Integer;
S: PByte;
R: PChar;
begin
if size > align then
size := align;
zerolen := align - size;
Result := StringOfChar(#0, align_size);
S := @Buf;
R := PChar(Result);
while size > 0 do
begin
R[0] := hextables[S^ shr 4];
R[1] := hextables[S^ and 3];
R[2] := #32;
Inc(S);
Inc(R, 3);
Dec(size);
end;
while zerolen > 0 do
begin
R[0] := '0';
R[1] := '0';
Dec(zerolen);
if zerolen <= 0 then break;
R[2] := #32;
Inc(R, 3);
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
s: string;
begin
S := #$97#$F3#$4E#$50#$64#$AD#$65#$32 ;
Memo1.Text := get(s[1], length(s));
end;