我想的取一个字符串的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但是结果是一样的.
请各位不吝赐教.

解决方案 »

  1.   

    函数为
    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;
    不知道为什么我发帖子的时候没有显示.....
      

  2.   

    '5'的ASCII码就是 53
    你的程序没有错误
      

  3.   

    程序没错啊:'51'的ascii值(十进制)就是5349
    如果你要得到16进制的,可改
    asc1:=inttostr(byte(s[i])); 为asc1:=inttohex(byte(s[i]),2); 
    结果为3531
      

  4.   

    另:
    delphi有现成的函数:
      p:array[0..10] of char;
    ...
      BinToHex('51',p,2);