Wenn ich dich richtig verstehe, möchtest du die Bits von 2-er Komplementzahlen (=Integer) in sedezimaler Notation (=Hex) anzeigen. -> interpretiere die Integer Ausgangszahl als Cardinal und wandle die Cardinalzahl z.B. mit den Funktionen
Code: Alles auswählen
const
charhex: array[0..15] of char =
('0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F');
charhexlower: array[0..15] of char =
('0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f');
[...]
function valtohex(const avalue: byte): string;
begin
setlength(result,2);
pchar(pointer(result))^:= charhexlower[avalue shr 4];
pchar(pchar(pointer(result))+1)^:= charhexlower[avalue and $f];
end;
function valtohex(const avalue: word): string;
begin
setlength(result,4);
pchar(pointer(result))^:= charhexlower[avalue shr 12];
pchar(pchar(pointer(result))+1)^:= charhexlower[(avalue shr 8) and $f];
pchar(pchar(pointer(result))+2)^:= charhexlower[(avalue shr 4) and $f];
pchar(pchar(pointer(result))+3)^:= charhexlower[avalue and $f];
end;
function valtohex(const avalue: longword): string;
begin
setlength(result,8);
pchar(pointer(result))^:= charhexlower[avalue shr 28];
pchar(pchar(pointer(result))+1)^:= charhexlower[(avalue shr 24) and $f];
pchar(pchar(pointer(result))+2)^:= charhexlower[(avalue shr 20) and $f];
pchar(pchar(pointer(result))+3)^:= charhexlower[(avalue shr 16) and $f];
pchar(pchar(pointer(result))+4)^:= charhexlower[(avalue shr 12) and $f];
pchar(pchar(pointer(result))+5)^:= charhexlower[(avalue shr 8) and $f];
pchar(pchar(pointer(result))+6)^:= charhexlower[(avalue shr 4) and $f];
pchar(pchar(pointer(result))+7)^:= charhexlower[avalue and $f];
end;
function valtohex(const avalue: qword): string;
begin
result:= valtohex(avalue shr 32)+valtohex(avalue);
end;
von hier:
https://gitlab.com/mseide-msegui/mseide ... matstr.pas