吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 571|回复: 3
收起左侧

[求助] 如何用Delphi把任意文件的16进制读取出来?

[复制链接]
冥界3大法王 发表于 2024-2-6 09:07
内容就是WinHex中看到的16进制内容

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

homejun 发表于 2024-2-6 09:42
本帖最后由 homejun 于 2024-2-6 09:47 编辑

[Delphi] 纯文本查看 复制代码
function FileToHex(const AFileName: string): string;
var
  Stream: TFileStream;
  Buffer: array [0 .. 255] of Byte; // 每次读取最多256个字节
  BytesRead: Integer;
begin
  Result := '';
  try  
    try
      Stream := TFileStream.Create(AFileName, fmOpenRead);

      while True do
      begin
        BytesRead := Stream.Read(Buffer, SizeOf(Buffer));

        if BytesRead = 0 then
          Break;

        for var I := 0 to BytesRead - 1 do
          Result := Format('%s %.2x', [Result, Buffer[I]]);
      end;
      
      Result := Trim(Result);

    except
      on E: Exception do
        ShowMessage('Error reading file: ' + E.Message);
    end;
  finally
    Stream.Free;
  end;
end;

免费评分

参与人数 1吾爱币 +4 热心值 +1 收起 理由
冥界3大法王 + 4 + 1 非常感谢!

查看全部评分

 楼主| 冥界3大法王 发表于 2024-2-6 09:49
本帖最后由 冥界3大法王 于 2024-2-6 10:00 编辑

@@homejun

那下面这个有用(沾边)吗?
[Delphi] 纯文本查看 复制代码
procedure TForm7.Button1Click(Sender: TObject);
var
  Mem: TMemoryStream;
  buf: array[0..3285] of Byte; // 下界为0所以减1
begin
  Mem := TMemoryStream.Create;
  Mem.LoadFromFile('abc.dat');
  // 读入处理
  FillChar(buf, SizeOf(buf), 0);
  Mem.Position := 0;
  Mem.Read(buf, SizeOf(buf));


// 写入
  Mem.Clear;
  Mem.Position := 0;
  Mem.Write(buf, SizeOf(buf));
  Mem.SaveToFile('abc.dat');
  Mem.free;
end;
 楼主| 冥界3大法王 发表于 2024-2-6 09:53
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 15:27

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表