如何将十六进制数据取反?(50分)

  • 主题发起人 主题发起人 qmwuu
  • 开始时间 开始时间
Q

qmwuu

Unregistered / Unconfirmed
GUEST, unregistred user!
例如:0x01,取反后应该是0xFE.
 
var
s, c: string;
i: integer;
begin
s := Memo1.Text;
for i := 1 to length(s) do
begin
if s[i + 4] = 'h' then
begin
c := c + inttohex(not word(strtoint('$' + copy(s, i, 4))), 2);
end;
if (s[i + 4] = 'h')or(s[i + 3] = 'h') or (s[i + 2] = 'h') or (s[i + 1] = 'h') then
else
c := c + s;
end;
Memo2.Lines.Add(c);
可对一个文本取反,要求0x01后要有h
 

val
Str1 :String;
n : Longint;
begin
str1 := 'DD';
n := StrToInt('$'+str1);
n := Byte(Not n);
str1 := IntToHex(n.2);
ShowMessage(Str1);
end;
 
var
a, b: Byte;

a := 1;
b := Byte(a xor $FF);
ShowMessage( '$'+IntToHex(a,2)+'取反等于:$'+IntToHex(b,2));
 
楼上的好,言简意赅
 
多人接受答案了。
 
后退
顶部