读书人

为什么自带的函数ENCODE和DECODE出来就

发布时间: 2012-06-25 18:37:39 作者: rapoo

为什么自带的函数ENCODE和DECODE出来就有问题?
在做SOAP的时候,发现上传到服务端程序就会有问题,而且都是delphi开发的,编码也是用的自带函数SOAP.endecd,于是在单机上进行测试,代码如下:

Delphi(Pascal) code
var  input_str_stream:TStringStream;  input_mem_stream:TMemoryStream;  output_str_stream:TStringStream;  output_mem_stream:TMemoryStream;  output_file,send_string:string;begin  try      input_mem_stream:=TMemoryStream.Create;      output_mem_stream:=TMemoryStream.Create;      input_mem_stream.LoadFromFile(edt1.Text);       input_mem_stream.SaveToFile('d:\temp_64_oldoutput.jpg');      input_str_stream:=TStringStream.Create;      input_mem_stream.SaveToStream(input_str_stream);      send_string:=EncodeBase64(input_str_stream,Length(input_str_stream.DataString));//编码      output_str_stream:=TStringStream.Create(DecodeBase64(send_string));      output_mem_stream.LoadFromStream(output_str_stream);      output_file:='D:\tmp_64_output.jpg';      output_mem_stream.SaveToFile(output_file);  finally    input_str_stream.Free;    input_mem_stream.Free;    output_str_stream.Free;    output_mem_stream.Free;  end;

结果,源文件和解码出来的文件完全不一样
源文件:00-3F
FFD8FFE000104A4649460001010100
0000000000FFDB0043000806060706
05080707070909080A0C140D0C0B0B
0C1912130F141D1A1F1E1D1A1C1C20
242E2720
编码输出:00-3F
D8BB430048234D02545A0000545A00
000060000048234D02E02653020000
00000000000001000000B004020000
000000080000005400610062004F00
72006400

[解决办法]
探讨
自己找到原因了,这一行:

Delphi(Pascal) code


send_string:=EncodeBase64(input_str_stream.memory,input_str_stream.size);//编码

[解决办法]
恭喜LZ了

读书人网 >.NET

热点推荐