Delphi 2007 升级到Delphi xe2时,遇到aes加密中chr函数问题,两个版本返回的数据不一致

violetlength 2023-04-13 16:44:55

高版本中,需要怎么调整?如下转换函数,在两个版本的Delphi中,返回的数据不一致;
并且,高版本中按照如下这两种AnsiChar和chr  ,打印后获取的值也不一致;

LogToFile(IntToStr(I)+'=='+AnsiChar(StrToInt('0x' + Copy(Value, I, 2))), True);

LogToFile(IntToStr(I)+'++'+Chr(StrToInt('0x' + Copy(Value, I, 2))), True);

 

比如 '0xE2'  前者是?,后者是a

==?
++a
--0xE2

再比如:'0xC9'  前者返回是?,后者是é

==?
++é
--0xC9

 

这样升级Delphi版本后,就不能通用了;那么,这种情况,高版本中如何替换Chr函数,能够实现一致的返回值呢?还是说无解?

 

具体的函数如下:


function HexToStr(Value: string): string;
  var
    I: Integer;
  begin
    Result := '';
    LogToFile('=='+IntToStr(Length(Value)), True);
    for I := 1 to Length(Value) do
    begin
      if ((I mod 2) = 1) then
      begin
        LogToFile(IntToStr(I)+'=='+AnsiChar(StrToInt('0x' + Copy(Value, I, 2))), True);
        LogToFile(IntToStr(I)+'++'+Chr(StrToInt('0x' + Copy(Value, I, 2))), True);

//        LogToFile(IntToStr(I)+'--'+'0x' + Copy(Value, I, 2), True);
        Result := Result + Chr(StrToInt('0x' + Copy(Value, I, 2)));
      end;
    end;
    LogToFile('=='+Result, True);
  end;

 

...全文
377 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复

16,742

社区成员

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

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