字符串解析(在线等。。。)(100分)

  • 主题发起人 主题发起人 lynch2611
  • 开始时间 开始时间
L

lynch2611

Unregistered / Unconfirmed
GUEST, unregistred user!
现有字符串如下:#$FE#0#0'%'#0#0'0'
预将其转换成16进制字符串,为:FE000025000030
问题:如何解析前面的字符串到后面的样字?
 
1进制??? 没明白.
 
我是这样做的 用lstrcpy()函数把前面的字符串转换成CHAR数组,再把CHAR一一转换成16进制字符串的!但结果变成了FE000000000000,我发现是在用lstrcpy()函数时就不对了~~
 
“1进制字符串”???? 什么东东???
你的意思是不是将字符串中你不需要的字符取出来???
我这个有个函数
Function TForm1.GetArrayData(StrArray:String;StrNo:String):TStringList;
var
StrTmp,CopyStr:string;
PosI:Integer;
ResultList:TStringList;
begin
StrTmp:=StrArray + StrNo;
CopyStr:=StrTmp;
ResultList:=TStringList.Create;
while Length(StrTmp) > 0 do
begin
PosI:=Pos(StrNo,StrTmp);
CopyStr:=Copy(StrTmp,1,PosI-1);
ResultList.Add(CopyStr);
Delete(StrTmp,1,PosI);
end;
Result:=ResultList;
end;


procedure TForm1.Button1Click(Sender: TObject);
begin //調用方法
Memo1.Lines.Text:=GetArrayData('this is a phone', ' ').Text;
end;

delphi也有个自带的函数 ExtractStrings
procedure TForm1.Button2Click(Sender: TObject);
begin
ExtractStrings([' '],[],'this is a phone',Memo1.Lines );
end;

不过这两个东东每次只能除去同一个字符,
将函数改一改,
或者作个循环,分几次除去多余的字符。
应该可以达到你的目的
 
to 完美动物
不好意思 是我写错了 是 16进制
我是想把字符串转化!!
 
晕 会错了意思

不好意思
 
function show16bit(s: string): string;
var i: integer;
begin
result := 'Nothing to convert 16bit.';
if length(s) = 0 then exit;
result := '';
for i := 1 to length(s) do
result := result + format('%2.2X', [ord(s)]);
end;
 
#$FE是什么? #$F#$E? 还是#$F'E'

function heiheiheihei(sStr: String): String;
var
i: Integer;
begin
Result := '';
sStr := #$FE#0#0'%'#0#0'0';
for i := 0 to Length(sStr) - 1 do
Result := Result + IntToHex(Ord(sStr), 2);
end;
 
用inttohex函数
 
BinToHex()
Delphi 有现成的函数 BinToHex
 
以上方法我都依次试了 都解不对 我要解析的字符串里的字符都是一个个16进制所对应的字符!!
 
//实现
function GetHexFormat(sStr: String): String;
var
i: Integer;
begin
Result := '';
for i := 1 to Length(sStr) do
Result := Result + IntToHex(Ord(sStr), 2);
end;

//使用
procedure TForm1.Button1Click(Sender: TObject);
begin
Caption := GetHexFormat(#$FE#0#0'%'#0#0'0');
end;

//结果
窗口标题上显示:FE000025000030

这个就对了,字符串下标从1开始
 
jasonfu 的 function show16bit(s: string): string; 也是正确的。测试也通过了。
你没测试过吗?
 
多人接受答案了。
 
后退
顶部