翻java成delphi,delphi7下有一样的编码dcu么?

Henry.6 2012-03-07 10:56:30
String s = new String(org.apache.commons.codec.binary.Hex.encodeHex(byte[] b));
...全文
106 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
Henry.6 2012-03-08
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 erhan 的回复:]
上面的定义 TByteArray = array[0..32767] of Byte;
[/Quote]

为什么一定是定长数组?当然定长读出的数据跟那个java的现在是一致的。
我一定义为变长数组。
就不能用TMemoryStream.readbuff 写到buffer中

TByteArray2 = array of Byte;
var
buff : TByteArray2;
P : PByte;
P_SendStream: TMemoryStream;
BufSize : Cardinal;
begin
P_SendStream := TMemoryStream.Create();
try
P_SendStream.LoadFromFile('d:\a.zip');

BufSize := P_SendStream.Size;
SetLength(buff,BufSize);
P_SendStream.Position := 0;
P_SendStream.ReadBuffer(buff,BufSize);//必然出错,为什么?

mmo1.Clear;
mmo1.Lines.Add(LowerCase( BufferToHex(buff,BufSize)));

except
FreeAndNil(P_SendStream);
end;
end;
lzg827 2012-03-07
  • 打赏
  • 举报
回复
楼主java里面的encodeHex应该有源码的吧。
不见得是java自带的吧。。。
kaikai_kk 2012-03-07
  • 打赏
  • 举报
回复
D沒有encodeHex函数,要自己写代码实现
我看见佛 2012-03-07
  • 打赏
  • 举报
回复
DELPHI有DCU文件,是编译的链接文件,没听说过DCU编码的
bdmh 2012-03-07
  • 打赏
  • 举报
回复
你得先搞明白encodeHex的运作,然后自己写一个,没有现成的
erhan 2012-03-07
  • 打赏
  • 举报
回复
上面的定义 TByteArray = array[0..32767] of Byte;
erhan 2012-03-07
  • 打赏
  • 举报
回复
代码不是我写的,LockBox的LbUtils下面带的

{ -------------------------------------------------------------------------- }
function BufferToHex(const Buf; BufSize : Cardinal) : string;
var
I : LongInt;
begin
Result := '';
for I := 0 to BufSize - 1 do
Result := Result + IntToHex(TByteArray(Buf)[I], 2); {!!.01}
end;
{ -------------------------------------------------------------------------- }
function HexToBuffer(const Hex : string; var Buf; BufSize : Cardinal) : Boolean;
var
i, C : Integer;
Str : string;
Count : Integer;
begin
Result := False;
Str := '';
for i := 1 to Length(Hex) do
if Upcase(Hex[i]) in ['0'..'9', 'A'..'F'] then
Str := Str + Hex[i];

FillChar(Buf, BufSize, #0);
Count := Min(Length(Hex), BufSize);

for i := 0 to Count - 1 do begin
Val('$' + Copy(Str, (i shl 1) + 1, 2), TByteArray(Buf)[i], C); {!!.01}
if (C <> 0) then
Exit;
end;

Result := True;
end;
Henry.6 2012-03-07
  • 打赏
  • 举报
回复
http://www.oschina.net/code/explore/commons-codec-1.4-src/src/java/org/apache/commons/codec/binary/Hex.java
Henry.6 2012-03-07
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 bdmh 的回复:]
你得先搞明白encodeHex的运作,然后自己写一个,没有现成的
[/Quote]
源码这个有的,要自己翻,痛苦。
亮剑_ 2012-03-07
  • 打赏
  • 举报
回复
encodeHex,字面看是将byte[]编成十六进制码

16,748

社区成员

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

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