大家好:
有没有人能帮忙改写一下啊?// 把字符串转换为16进制字符串
// 如:a变成61(即10进制的97);abc变成616263
function stringToHex(s) {
var r='';
var hexes=new Array('0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f');
for(var i=0;i<(s.length);i++){r+=hexes[s.charCodeAt(i)>>4]+hexes[s.charCodeAt(i)&0xf];}
return r;
}
// 16进制字符串转换为字符串
// 如:61(即10进制的97)变成a;616263变成abc
function HexTostring(s){
var r='';
for(var i=0;i<s.length;i+=2){
var sxx=parseInt(s.substring(i,i+2),16);
r+=String.fromCharCode(sxx);}
return r;
}
有没有人能帮忙改写一下啊?// 把字符串转换为16进制字符串
// 如:a变成61(即10进制的97);abc变成616263
function stringToHex(s) {
var r='';
var hexes=new Array('0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f');
for(var i=0;i<(s.length);i++){r+=hexes[s.charCodeAt(i)>>4]+hexes[s.charCodeAt(i)&0xf];}
return r;
}
// 16进制字符串转换为字符串
// 如:61(即10进制的97)变成a;616263变成abc
function HexTostring(s){
var r='';
for(var i=0;i<s.length;i+=2){
var sxx=parseInt(s.substring(i,i+2),16);
r+=String.fromCharCode(sxx);}
return r;
}
解决方案 »
- database的databasename到底该写什么?
- -----------------如何安全的关闭知道进程id的应用程序-------------------
- 帮我看看,下面的该如何实现换页?
- 为什么下面的代码影响到了字符串的引用记数???
- qreport不能以自定义大小纸张打印问题
- 各位大虾我的监控程序(要不停的换文件,写文件)在运行久了后运行其它任何程序时为何出现系统资源不够
- JDK现在几点零??哪里有下载啊
- WinINet 下载时有不规则停顿!
- 100分,急向高手求教!关于Delphi的FTP编程问题!
- 这个问题确实比较难!
- DelPhi2010的CxGrid控件包
- 求tcpclient和tcpserver的用法!
//把指定的二进制数据转换成十六进制表示的字符串
begin
SetLength(Result, Len shl 1);
BinToHex(Data, PChar(Result), Len);
end;function HexToData(const HexStr: string): string;
//转换十六进制字符串数据为字符串
begin
SetLength(Result, Length(HexStr) shr 1);
Classes.HexToBin(PChar(HexStr), PChar(Result), Length(Result));
end;
var
i:integer;
begin
result:='';
for i:=1 to length(s) do
result:=result+inttohex(ord(s[i]),2);
end;function HexTostring(s:string):string;
var
i:integer;
begin
result:='';
for i:=1 to length(s) div 2 do
result:=result+chr(strtoint('$'+copy(s,(i-1)*2+1,2)));
end;
俺只是看要求
俺的第一个函数负责把'abc'变成'616263'
俺的第二个函数负责把'616263'变成'abc'
是这一句注释误导大家,上面函数好象并没有将abc转为616263,不好意思!!
// 如:a变成61(即10进制的97);abc变成616263
// 如:a变成61(即10进制的97);abc变成616263
function stringToHex(const s: AnsiString): AnsiString;
const
hexes: array [0..$f] of AnsiChar = ('0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f');
var
I, iLen: Integer;
begin
iLen := Length(s);
SetLength(Result, iLen * 2);
for I := 0 to iLen - 1 do begin
Result[I * 2 + 1] := hexes[Byte(s[i+1]) shr 4];
Result[I * 2 + 2] := hexes[Byte(s[i+1]) and $f];
end;
end;
// 16进制字符串转换为字符串
// 如:61(即10进制的97)变成a;616263变成abc
function HexTostring(const s: AnsiString): AnsiString;
var
I, iLen: Integer;
C0,C1: AnsiChar;
B0,B1: Word;
begin
iLen := Length(s);
SetLength(Result, iLen div 2);
I := 0;
while iLen > I do begin
C0 := S[I+1];
C1 := S[I+2];
case C0 of
'1'..'9': B0 := Byte(C0) - 48;
'a'..'f': B0 := Byte(C0) - 97 + 10;
'A'..'F': B0 := Byte(C0) - 65 + 10;
else
B0 := 0;
end;
case C1 of
'1'..'9': B1 := Byte(C1) - 48;
'a'..'f': B1 := Byte(C1) - 97 + 10;
'A'..'F': B1 := Byte(C1) - 65 + 10;
else
B1 := 0;
end;
Result[I div 2 + 1] := AnsiChar(B0 shl 4 or B1);
Inc(I, 2);
end;
end;
测试代码:
var
s1, s2, S3: AnsiString;
begin
s1 := 'abc123';
s2 := stringToHex(s1);
S3 := HexTostring(S2);
ShowMessage(Format('S1="%s"'#13#10'S2="%s"'#13#10'S3="%s"',[s1,s2,S3]));
end;