delphi如何将“分析模块”四个汉字转为16进制的utf-8
delphi如何将“分析模块”四个汉字转为16进制的utf-8结果为:EFBBBFE58886E69E90E6A8A1E59D97 本帖最后由 不苦小和尚 于 2020-6-23 18:51 编辑
str1:='分析模块';
str2 := UTF8Encode(str1);
ShowMessage(StringToHex(str2));
结果应该是这个吧 不苦小和尚 发表于 2020-6-23 18:49
str1:='分析模块';
str2 := UTF8Encode(str1);
ShowMessage(StringToHex(s ...
@不苦小和尚
结果不对!被坑了。
结果为:EFBBBFE58886E69E90E6A8A1E59D97 才对。 冥界3大法王 发表于 2020-6-23 19:45
@不苦小和尚
结果不对!被坑了。
你用在线的转换一下就知道对不对了 本帖最后由 冥界3大法王 于 2020-6-23 19:58 编辑
不苦小和尚 发表于 2020-6-23 19:53
你用在线的转换一下就知道对不对了@不苦小和尚
不用试,你的代码不对
我是借notepad++,utf-8,winhex中复制来的16进制结果
已经汉化了x32dbg的插件。
少了字头的三个字节 而且还没有StringToHex这个函数 本帖最后由 在回忆中 于 2020-6-23 20:05 编辑
答案是没有错误的,所有采用UTF-8格式编码的文件的文件头三个字节用16进制表示是EFBBBF,因此在读取UTF-8格式文件的时候,需要去掉这个文件头。
在回忆中 发表于 2020-6-23 20:03
答案是没有错误的,所有采用UTF-8格式编码的文件的文件头三个字节用16进制表示是EFBBBF,因此在读取UTF-8格 ...
@在回忆中
我需要加回去的代码 function StringToHex(str: string): string;
var
i : integer;
s : string;
begin
for i:=1 to length(str) do begin
s := s + InttoHex(Integer(str),2);
end;
Result:='EFBBBF'+s;
end; 不苦小和尚 发表于 2020-6-23 20:15
function StringToHex(str: string): string;
var
i : integer;
unit Unit2;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants,
System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs,
Vcl.StdCtrls;
type
TForm2 = class(TForm)
Button1: TButton;
Edit1: TEdit;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form2: TForm2;
implementation
{$R *.dfm}
function StringToHex(str: string): string;
var
i: integer;
s: string;
begin
for i := 1 to length(str) do
begin
s := s + InttoHex(Integer(str), 2);
end;
Result := 'EFBBBF' + s;
end;
procedure TForm2.Button1Click(Sender: TObject);
begin
ShowMessage(StringToHex(UTF8Encode(Edit1.Text)));
end;
end.
结果还是有问题啊。
页:
[1]
2