delphi函数的一个问题

jiyougang 2008-09-07 09:05:45
我想的取一个字符串的ascii码.于是我写了如下函数进行转换.

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;

但是我在单步的时候发现循环的时候取得的值为第一个字符的ascii码的反转值+一些别的值
可能我描述的不是很清楚,假如我传入的字符串为51吧那么我取得的值为5320当然这里20是我假设出来的但是53是我单步看到的
请问各位大虾为什么我的这个函数会这样?是不是我哪个地方写错了?
当然这里可以使用ord但是结果是一样的.
请各位不吝赐教.
...全文
52 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
jiyougang 2008-09-07
  • 打赏
  • 举报
回复
我的分不多大家请谅解
jiyougang 2008-09-07
  • 打赏
  • 举报
回复
谢谢你了.我一直以为自己的函数出了问题
谢谢
柯本 2008-09-07
  • 打赏
  • 举报
回复
另:
delphi有现成的函数:
p:array[0..10] of char;
...
BinToHex('51',p,2);
柯本 2008-09-07
  • 打赏
  • 举报
回复
程序没错啊:'51'的ascii值(十进制)就是5349
如果你要得到16进制的,可改
asc1:=inttostr(byte(s[i])); 为asc1:=inttohex(byte(s[i]),2);
结果为3531
lihuasoft 2008-09-07
  • 打赏
  • 举报
回复
'5'的ASCII码就是 53
你的程序没有错误
jiyougang 2008-09-07
  • 打赏
  • 举报
回复
函数为
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,749

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧