delphi 中,怎么实现16进制字符串与ASCII码相互转换? delphi 中,怎么把一段字符串,转换成16进制编码,之后...

\u5728delphi\u4e2d\u600e\u4e48\u5b9e\u73b0\u5c06ascii\u7801\u8f6c\u6362\u6210\u5341\u516d\u8fdb\u5236

\u662f\u5173\u4e8e\u5b57\u7b26\u4e32\u8f6c\u6362\u5427\uff1a
\u5c06\u5341\u516d\u8fdb\u5236\u6570\u503c\u8bbe\u4e3a '$' + \u6570\u636e\u7684\u6a21\u5f0f\uff0c\u518d\u7528 StrToInt() \u5373\u53ef\u3002
\u4f8b\u5982\uff1aStrToInt('$' + 'BC') = 188

\u7ed9\u4f60\u5199\u4e86\u4e24\u4e2a\u51fd\u6570

function Encode16(const sourstr : string) : string; //\u628a\u5b57\u7b26\u4e32\u8f6c\u6362\u6210\u5341\u516d\u8fdb\u5236\u7f16\u7801
var
i : integer;
begin
result := '';
for i := 0 to length(sourstr) - 1 do
begin
result := result + IntToHex(ord(sourstr[i+1]),2) ;
end;
end;

function Decode16(const SourStr : string) : string; //\u628a\u7528Encode16\u7f16\u7801\u8fc7\u7684\u5b57\u4e32\u8fd8\u539f
var
i ,j: integer;
begin
result := '';
j := 0;
for i := 0 to length(sourstr) - 3 do
begin
result := result + chr(StrToInt('$' + copy(sourStr,j+1,2)));
j := j + 2;
if j >= length(sourstr) then
break;
end
end;

\u8c03\u7528\u65b9\u6cd5\uff1a

var
tmp,buf : string;
begin
tmp := 'hello,world!';
buf := Encode16(tmp); //68656C6C6F2C776F726C6421
tmp := Decode16(buf); //hello,world!
end;

你什么意思,16进制字符串中每一个字符对应的不就是ASCII值吗?你举例表示你是什么意思。

虽然提问结束,我还是给你写了一个转换函数
function TForm1.AsciiToHex(str: string): string;
var
i:integer;
changestr:string;
begin
changestr:='';
for i:=1 to length(str) do
begin
changestr:=changestr+inttohex(ord(str[i]),2);
end;
AsciiToHex:=changestr;
end;

是关于字符串转换吧:
将十六进制数值设为 '$' + 数据的模式,再用 StrToInt() 即可。
例如:StrToInt('$' + 'BC') = 188

扩展阅读:borland delphi ... delphi 开发国产化系统 ... delphi xe12 ... delphi 翻译 ... a∩b和a∪b的区别 ... dolphin 是什么意思 ... 表格怎么去除#div0 ... dolphin emu ... delphi方法是什么意思 ...

本站交流只代表网友个人观点,与本站立场无关
欢迎反馈与建议,请联系电邮
2024© 车视网