怎样在D6中取的一个字符的十六进制,并做逻辑运算(AND,OR……)?我是个初学者望能详细解答,谢谢!(50分)

  • 主题发起人 主题发起人 jita
  • 开始时间 开始时间
J

jita

Unregistered / Unconfirmed
GUEST, unregistred user!
例如:
var Str:string;//Str中有5个字符
Begin
str1:=copy(str,1,1);//将每个字符取出来准备做运算
str2:=copy(str,2,1);
.....
str5:=copy(str,5,1);
{假如 HEX() 是取字符的十六进制,将每个字符的十六进制相与后赋值给Temp.}
Temp:=(hex(str1))AND(hex(str2))AND……AND(hex(str5))
....
我就是想做这个功能,还望大虾不嫌弃这50个大洋能详细解答,谢谢![:)]
E-mail:top_hj366@sohu.com
 
先把数转换成正常的数值,HexToInt() - 自己做一个函数
然后不就可以进行运算了吗?

HexToInt() 的算法很简单:
扫描串,
case 0..9: result = result * 10 + Ord(ch) - Ord('0');
case A..F: result = result * 10 + Ord(ch) - Ord('A') + 10;

16进制与否只与数的表达有关系,而对于运算则根本不搭界。
 
不知下面的代码是否是你要求的功能?
var
S:string;
N:integer;
Temp:byte;
i:integer;
begin
S:='12345';
N:=Length(S);
Temp:=Byte(S[1]);
for i:=1 to N do
Temp:=Temp and Byte(S);

ShowMessage(IntToHex(Temp,2));
end;
 
var Str:string; //Str中有5个字符
Begin
str1:=copy(str,1,1);//将每个字符取出来准备做运算
str2:=copy(str,2,1);
str3:=copy(str,3,1);
str4:=copy(str,4,1);
str5:=copy(str,5,1);
Temp:=Ord(str1) AND Ord(str2) AND Ord(str3) AND Ord(str4) AND Ord(str5);

几乎不消耗任何脑能量。:)
 
var Str:string;//Str中有5个字符
a:array[0..4]of byte;
i:integer;
begin
move(str,a,5);
for i:=0 to 4 do temp:=temp and a;
temp:=inttohex(temp,2);
end;
 
这个问题我遇到过,我前不久做项目用来做CheckSum,给你邮了一个DEMO,
是不是这个功能?
 
非常感谢你们的解答!但是更感谢 top_hj 邮给我的DEMO(太详细了[:D]),让我
学到好多DELPHI的知识及技巧![^]
 
后退
顶部