打开一个二进制dat文件,其数据如下:52 00 52 00 00 00 00 00 37 00 31 00 32 00 35 00 36 00 EB 5F 50 4E 29 59 7F 4F 00
00 00 00 00 F8 0C DE 77 04 00……已经知道这个文本的内容是: RR 71256 快乐天使 20110410……本来以为是十六进制,但却又多了好多 00,谁知道怎么写个函数把这些文本恢复出来??
00 00 00 00 F8 0C DE 77 04 00……已经知道这个文本的内容是: RR 71256 快乐天使 20110410……本来以为是十六进制,但却又多了好多 00,谁知道怎么写个函数把这些文本恢复出来??
0052 R ASCII码
0052 R ASCII码
0000
0000
0037 7 ASCII码
0031 1 ASCII码
0032 2 ASCII码
0035 5 ASCII码
0036 6 ASCII码
5FEB 快 中文内码
4E50 乐
5929 天
4F7F 使
0000
0000
F800 以下不知什么码了,自己结合后面的二进制及文本对照下。
DE0C
0477
var
s: Widestring;
ms: TMemoryStream;
begin
{写入}
ms := TMemoryStream.Create;
s := 'RR 71256 快乐天使 20110410......';
ms.Write(PWideChar(s)^, Length(s) * 2) ;
ms.SaveToFile('d:\test.txt');
ms.Free; {取出}
ms := TMemoryStream.Create;
ms.LoadFromFile('d:\test.txt');
ms.ReadBuffer(s[1],ms.Size);
ms.Free; {显示}
Edit1.Text := AnsiString(s);
end;以上是 D2007(含)以下版本的写法,其实用 D2009(含)并不用那么复杂,因为高版本已经是 widestring 了,多年期待的统一字符已经实现了,我们还有什么理由不用新版本?
s: Array of PWideChar;
ms: TMemoryStream;
iL: Int64;
begin
{取出}
ms := TMemoryStream.Create;
ms.LoadFromFile('d:\test.txt');
iL:= ms.Size;
SetLength(s, iL);
ms.ReadBuffer(s[0], ms.Size);
ms.Free; {显示}
Edit1.Text := AnsiString(s);
end;