我想的取一个字符串的ascii码.于是我写了如下函数进行转换.
[code]
function getasc(s:string):string;
var
len,i:integer;
asc1,mm:string;
begin
len:=length(s);
for i:=1 to len do
begin
asc1:=inttostr(byte(s[i]));
mm:=mm+asc1
end;
result:=mm;
end;
[/code]
但是我在单步的时候发现循环的时候取得的值为第一个字符的ascii码的反转值+一些别的值
可能我描述的不是很清楚,假如我传入的字符串为51吧那么我取得的值为5320当然这里20是我假设出来的但是53是我单步看到的
请问各位大虾为什么我的这个函数会这样?是不是我哪个地方写错了?
当然这里可以使用ord但是结果是一样的.
请各位不吝赐教.
[code]
function getasc(s:string):string;
var
len,i:integer;
asc1,mm:string;
begin
len:=length(s);
for i:=1 to len do
begin
asc1:=inttostr(byte(s[i]));
mm:=mm+asc1
end;
result:=mm;
end;
[/code]
但是我在单步的时候发现循环的时候取得的值为第一个字符的ascii码的反转值+一些别的值
可能我描述的不是很清楚,假如我传入的字符串为51吧那么我取得的值为5320当然这里20是我假设出来的但是53是我单步看到的
请问各位大虾为什么我的这个函数会这样?是不是我哪个地方写错了?
当然这里可以使用ord但是结果是一样的.
请各位不吝赐教.
function getasc(s:string):string;
var
len,i:integer;
asc1,mm:string;
begin
len:=length(s);
for i:=1 to len do
begin
asc1:=inttostr(byte(s[i]));
mm:=mm+asc1
end;
result:=mm;
end;
不知道为什么我发帖子的时候没有显示.....
你的程序没有错误
如果你要得到16进制的,可改
asc1:=inttostr(byte(s[i])); 为asc1:=inttohex(byte(s[i]),2);
结果为3531
delphi有现成的函数:
p:array[0..10] of char;
...
BinToHex('51',p,2);