首页
社区
课程
招聘
请教delphi高手一个问题
发表于: 2011-2-4 11:59 4100

请教delphi高手一个问题

2011-2-4 11:59
4100
春节没事,看一下delphi,顺便写一个小东西,不想在一个小地方卡了一天。

  var
  ss3:string;
begin
  ss3 :='037DE9984E1BDA8ADA38BEC405C04B';
end;

因为是字符串,所以它在内存中是这样的:



我希望它变成这样:



请教一下该怎么做?

我要知道的是,赋值后程序用什么语句处理那个串,才能达到我希望的结果.

谢谢.

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (9)
雪    币: 36
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
赋值给一个字符串的值,内存中当然存的是这个字符串所对应的值,要达到你的要求,就直接写内存值。
2011-2-4 12:15
0
雪    币: 36
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
但是估计你不是字符串和内存的操作,应该是想把字符串当成网络包的值发送出去吧
2011-2-4 12:25
0
雪    币: 139
活跃值: (41)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
winhex, urltra edit 貌似 都有这个功能
2011-2-4 12:47
0
雪    币: 114
活跃值: (64)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
我要知道的是,赋值后程序用什么语句处理那个串,才能达到我希望的结果.
winhex, urltra edit....这也来?晕
2011-2-4 12:59
0
雪    币: 214
活跃值: (22)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
这样写就对了:

ss3 :=  #$03#$7D#$E9#$98#$4E。。。;

也可以用下边函数转换一下:

function HexString(s: string): string;
  function HexChar(c: Char): Byte;
  begin
    case c of
      '0'..'9':  Result := Byte(c) - Byte('0');
      'a'..'f':  Result := (Byte(c) - Byte('a')) + 10;
      'A'..'F':  Result := (Byte(c) - Byte('A')) + 10;
    else
      Result := 0;
    end;
  end;
var
  i,n: Integer;
  src, dest: PChar;
begin
  n := Length(s) div 2;
  Result := StringOfChar(#0,n);
  if n>0 then
  begin
    dest := @Result[1]; //dest := PChar(Result);
    src := PChar(s);
    for i := 0 to n-1 do
      dest[i] := Char((HexChar(src[i*2]) shl 4) + HexChar(src[i*2+1]));
  end;
end;
2011-2-4 19:12
0
雪    币: 36
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
楼上的是正解。
2011-2-4 20:15
0
雪    币: 114
活跃值: (64)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
6楼正解.
其实最初就是想通过赋值的,可不知怎么写,所以才希望通过后期用语句来处理.
多谢,多谢 axcom的热心.

另外我还想请教你一个问题:
我用的是indy10中的indy servers组件来向client发这段信息的:

ss4 := #$1B#$36#$4D#$27#$CC#$24#$44#$F0#$07;

IdUDPServer1.Send(ABinding.PeerIp,ABinding.PeerPort,ss4);

送出的时候 发现 #$CC这里成了 3F ,ascii码大于 80就出错了,

原字符串:


client收到的成了这样:


想请教一下怎么处理?
2011-2-4 20:30
0
雪    币: 214
活跃值: (22)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
uses IdGlobal

IdUDPServer1.Send(ABinding.PeerIp,ABinding.PeerPort,ss4,en8Bit);
2011-2-4 20:57
0
雪    币: 114
活跃值: (64)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
uses 已存在 IdGlobal

程序编译时提示:

[Warning] Unit1.pas(53): Symbol 'en8Bit' is deprecated

貌似 en8Bit 这个参数被废弃了.
2011-2-4 21:13
0
游客
登录 | 注册 方可回帖
返回
//