二进制文件转成文本保存,并可以读回

以 JPEG 图片为例,以下代码演示了如何将一个 JPEG 图片保存为纯文本形式,并将其以图片形式读回并显示。
保存 TXT:

function TForm1.JpegToText(AFileName:string; SaveFile: Boolean; TxtFileName: string): string;
var
FileStream        : TFileStream;
StringStream      : TStringStream;
FSize             : integer;
FileData          : string;
i                 : integer;
DataStr           : string;
begin
try
    FileStream := TFileStream.Create(OpenDialog1.FileName, fmOpenRead);
    StringStream := TStringStream.Create(EmptyStr);
    FSize := FileStream.Size;
    StringStream.CopyFrom(FileStream, FSize);
    FileData := StringStream.DataString;
    DataStr := EmptyStr;
    for i := 1 to Length(FileData) do
    begin
      DataStr := DataStr + InttoHex(Ord(FileData[i]), 2);
    end;
    Result := DataStr;
    if SaveFile then
    begin
      with TStringList.Create do
      begin
        Text := DataStr;
        SaveToFile(TxtFileName);
        Free;
      end; 
    end; 
finally
    freeandnil(FileStream);
    freeandnil(StringStream);
end;
end;

从 TXT 读回 JPEG:

function TForm1.TextToJpeg(AFileName: string; SaveFile: Boolean; JpegFileName: string): TJPEGImage;
var
buf               : array of Byte;
DataLength        : Integer;
i                 : Integer;
DataStr           : string;
ByteFile          : file of byte;
jpg               : TJPEGImage;
tmpFileName: string;
begin
with TStringList.Create do
begin
    LoadFromFile(AFileName);
    DataStr := Text;
    Free;
end;
DataLength := Length(DataStr) div 2-1;
SetLength(buf, DataLength);
for i := 1 to DataLength do
begin
    buf[i - 1] := StrToInt('$' + copy(DataStr, (i - 1) * 2 + 1, 2));
end;
tmpFileName := ExtractFilePath(ParamStr(0))+'tmp.jpg';
AssignFile(ByteFile, tmpFileName);
Rewrite(ByteFile);
for i := 0 to DataLength - 1 do
begin
    write(ByteFile, buf[i]);
end;
CloseFile(ByteFile);
Result := TJPEGImage.Create;
Result.LoadFromFile(tmpFileName);
if SaveFile then
    Result.SaveToFile(JpegFileName);
DeleteFile(tmpFileName);
end;

转载于:https://www.cnblogs.com/railgunman/archive/2010/11/27/1889725.html

二进制文件与文本文件 1、C语言中缺省是按照文本方式打开文件。 2、二进制文件和文本文件 (1)文件是在计算机内存中以二进制表示的数据在外部存储介质上的另一种存放形式。 (2)文件通常分为二进制文件和文本文件。 (3)二进制文件是包含在 ASCII 及扩展 ASCII 字符中编写的数据或程序指令的文件。一般是可执行程序、图形、图象、声音等等文件。 (4)文本文件(也称为ASCII文件):它 阅读详情

相关推荐

Delphi以二进制方式读取图片并显示出来

摘要:Delphi源码,图形处理,二进制  Delphi以二进制方式读取图片并显示出来,读取图片文件为数据流,通过读取数据流转成十六进制或二进制。

Delphi文件读写操作常用的方法

在进行win32开发中对文件的读写是最常用的操作之一,这编文章西西小编和大家一起来学习一下在Delphi中如何读写文件的方法。 Delphi 支持三种文件类型:  文本文件、记录文件、无类型文件。 文本文件的读写: 文本文件 是以行为单位进行读、写的。由于每一行的长度不一定相同,不能计算出给定行在文件中的确切位置,因而只能顺序地读写。 文本文件只能单独为读或写而打开,在一个

L_baba的博客 3148

二进制文件操作

delphi二进制文件阅读器

二进制文件

二进制文件(也叫类型文件),二进制文件是由一批同一类型的数据组成的一个数据序列,就是说一个具体的二进制文件只能存放同一种类型的数据。type TMember = record Name : string[10]; eMail : string[20]; Posts : LongInt; end; var Members : array[1..50] of TMe...

weixin_30698297的博客 421

delphi读写sqlserver二进制字段image

使用delphi读写sqlserver中image字段,可以读取dmp,jpg,gif等格式的图片,至于二进制文件没有尝试过。

Delphi 二进制图片的存储和读取

XE10的,里面代码也适用7,主要就是流操作,代码注释里讲了几个注意的细节,附加测试数据库;

二进制文件、文本文件

先说结论: 二进制文件和文本文件都是按照二进制存储的,只不过文本文件是把一个字节一个字节解读成字符,而二进制文件可以任意定义解读方式。 在windows上,用记事本就可以打开文本文件了,但要打开二进制文件需要对应的二进制文件解码器,因此,文本文件是更为大家所熟知的文件形式,而二进制文件的优点在于它的输入输出都省去了转换的过程,而且更省空间。 文件的读写过程: 磁盘— 文件缓冲区 ...

yangyang的专栏 2万+

读取二进制文件读取二进制文件

读取二进制文件读取二进制文件读取二进制文件读取二进制文件读取二进制文件读取二进制文件读取二进制文件

Numpy二进制文件、文本文件的保存与读取

Numpy文件操作 一:二进制文件 概念:如果一个文件的后缀是 .npy / .npz 则为一个二进制文件 二进制文件生成 np.save(“file_name”,array) 注:save默认保存的为.npy文件,file_name可不加后缀,且只能保存一个数组 arr1 = np.random.random(100).reshape((10,10)) np.save("arr1",arr1) 二进制文件读取 np.load(“file_name”) 注:读取时文件名必须加后缀名 data =

weixin_46297209的博客 3202

关于使用vcpkg下载osgearth遇到的问题

注意--x-manifest-root=后面跟着的E:\gitproject\osgearth-osgearth-3.5\vcpkg是你下载的源码解压缩后vcpkg.json的文件地址,然后等待编译完成。安装vcpkg后使用vcpkg install osgearth:x64-windows安装好osgearth并且导入项目使用时,发现无法运行官方文档中示例的main.cpp。这里写一种自己用过的使用vcpkg安装osgearth3.5的方法,源码,打开vcpkg所在的命令行,执行。示例main.cpp。

m0_61776040的博客 1526

cuda安装时出现错误 Unable to locate package cuda-toolkit-12-4

cuda安装时出现错误 Unable to locate package cuda-toolkit-12-4

4871

文本文件和二进制文件的区别和联系

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 欢迎使用Markdown编辑器 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar

qq_39686950的博客 5170

IntelliJ IDEA 中git使用说明书

IntelliJ IDEA 中git使用说明书

junyang2012的博客 5392

linux二进制文件转换文本_文本文件和二进制文件究竟有啥区别

看似问题简单,好多人搞不懂真正的区别,下面我们从底层的角度给大家分析一下从C语言的角度来看,所有的文件都可简单的分为两类:一类是文本文件,另外一类是二进制文件。1、文本文件:所谓的文本文件,就是按照字符的编码规则(比如ASCII),1:1的根据你敲的字符形成的机器码文件。后缀习惯是以.txt结尾。一个典型的文本编辑器就是大家熟悉的记事本程序(notepad.exe)。假设我们在记事本程序里面写入了...

weixin_36228865的博客 2973

基于单片机的宠物狗智能项圈设计

GPS定位功能:利用GPS模块实时获取宠物的位置,帮助主人追踪宠物的活动轨迹。活动监测:使用加速度传感器监测宠物的活动情况,如运动、休息等,并进行分析。健康监测:集成心率传感器,实时监控宠物的心率,以确保其健康。声音识别功能:通过麦克风捕捉宠物的叫声,检测宠物的状态(如饥饿、疼痛等)。蓝牙/Wi-Fi通信:通过蓝牙或Wi-Fi模块与手机APP或云端平台进行数据交互,实时反馈宠物的状态信息。电池管理:实现低功耗设计,确保设备的续航能力。

2201_76125393的博客 2282

【一看就会】Autoware.universe中静态绕障路线的生成逻辑

在路径行为规划中,前期根据地图和起点终点,生成了一组连续可行的路径段序列(lanelets),然后后续路径行为规划,又会进行起始点,终止点,避障绕障路径的路径规划,并且会调用route_handler中的函数,进行中心线生成,最后生成路径,后续再给速度行为规划进行速度规划。在autoware.universe的规划中,是基于规则的规划,而其中的规则又是为了解决不同场景的。而这些场景,大部分是为了解决路上障碍物(静态、动态、行人、车辆等等)。

weixin_48386130的博客 321

二进制文件和文本文件的区别详解

目录 区别 最表象的区别: 再深一点的区别: 更深一点的区别: 为什么记事本打开二进制文件会乱码? 文本文件也是二进制文件: 总结 最近学了一些Python上的文件操作,然后对二进制文件和文本文件产生了兴趣,看了好多好多博客才对这俩的区别有了初步的认识,不同的博客有不同的理解。我将我所看到的博客中的一些...

Q_M_X_D_D_的博客 7583

你学Simulink--基于储能系统的建模与仿真场景:飞轮储能系统在电网调频中的作用仿真

本文详细介绍了利用Simulink+Simscape搭建飞轮储能系统(FESS)电网调频仿真模型的全过程。主要内容包括:系统工作原理及调频作用分析,基于Simulink的模块化建模步骤(飞轮、电机/发电机、功率电子接口等组件搭建),调频控制策略实现(频率检测、功率指令生成和模式切换),以及仿真参数设置与结果分析方法。该模型可有效模拟FESS在电网频率调节中的快速响应特性,为新能源存储和智能电网研究提供重要仿真工具,同时可通过参数优化和算法改进进一步提升系统性能。

xiaoheshang_123的博客 170

文本文件和二进制文件

记录文件,频率过高会导致数据丢失 因为用sprintf函数会有一个转换的时间;所以就考虑记录二进制文件,提高记录效率。 fdr记录60hz数据 记录后的二进制文件放在MATLAB解码

weixin_44057803的博客 1893

2026.5.3:Ubuntu26.04下uv所需的环境变量pyproject.toml

本文档提供了Python开发环境的配置指南。主要包括: 设置环境变量(HF_ENDPOINT、UV_PYTHON_INSTALL_MIRROR等) 创建pyproject.toml配置文件,定义项目元数据(名称、版本等) 指定依赖项(torch系列库)及其安装源(PyTorch官方CUDA 12.8镜像) 配置Python版本要求(>=3.13,<3.14) 设置平台限制(Linux/Windows) 该配置适用于需要PyTorch CUDA 12.8支持的项目开发环境搭建。

拥抱具身智能,昇腾Ascend C 595

一文读懂服务器带外管理

服务器带外管理(Out-of-Band Management)是指在服务器正常运行时,通过专门的管理通道对服务器进行监控、配置和控制,而无需依赖服务器的主操作系统

小熊猫的博客 6139

二进制文件和文本文件的区别

文本文件与二进制文件的定义   文本文件:是基于字符编码的文件,常见的编码有ASCII编码,UNICODE编码等等。   二进制文件:是基于值编码的文件,你可以根据具体应用,指定某个值是什么意思(这样一个过程,可以看作是自定义编码。   从上面可以看出文本文件基本上是定长编码的(也有非定长的编码如UTF-8)。而二进制文件可看成是变长编码的,因为是值编码嘛,多少个比特代表一个值,完全由你决定。

xy的博客 5173

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

二进制文件和文本文件区别-小白笔记

1 视图形式 不同的二进制文件需要不同的软件来打开,例如BMP文件,需要一个读图的软件来打开才能看到里面保存的图像,MP3文件需要一个播放器软件才能听到里面的音频。而文本文件只需要记事本就可以打开查看里面的内容。 2 存储形式 二进制文件里存储的东西是二进制数据,就是01串。而文本文件中存储的是字符串,比如汉字。这点是从逻辑层面上所说的,不完全正确,但是便于理解,下面我会进阶的细说这里。 3 性能 二进制文件的读写速度非常快,因为它就是将数据在内存中的存储形式(二进制)原模原样放到文件中,读出.

码灵的博客 4622

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

python中文本文件和二进制文件的区别_文本文件和二进制文件的区别

定义广义的二进制文件即指文件,由文件在外部设备的存放形式为二进制而得名。狭义的二进制文件即除文本文件以外的文件。文本文件是一种由很多行字符构成的计算机文件。文本文件存在于计算机系统中,通常在文本文件最后一行放置文件结束标志。文本文件的编码基于字符定长,译码相对要容易一些;二进制文件编码是变长的,灵活利用率要高,而译码要难一些,不同的二进制文件译码方式是不同的。从本质上来说他们之间没有什么区别,因为...

weixin_39762464的博客 3188

贝叶斯统计 [韦来生编]

贝叶斯(Bayes)统计是近几十年来迅速发展起来的数理统计的一个重要分支。贝叶斯方法与经典统计方法的主要不同之处是进行统计推断时除了利用样本信息外,还要利用参数的先验信息,因此可以提高统计推断或统计决策的效果。它在经济、金融、生物、医学、自然科学和社会科学等许多领域具有广泛的应用。贝叶斯方法的研究已渗透到了统计学的几乎所有领域。作者在给中国科学技术大学概率论与数理统计专业本科生开设的“数理统计”课程中有一章专门讲授“贝叶斯方法和统计决策理论”,近十年来也给中国科学技术大学概率统计专业研究生开设过几次“贝叶斯分析”课。本书是在对过去讲稿的内容作了适当的增减和调整的基础上完成的。  本书共分六章。第1章是绪论,介绍了贝叶斯统计的若干基本概念,同时对必要的数理统计的基础知识有重点地作了回顾。第二章介绍了确定先验分布的若干可供选择的方法。第三章介绍了几类常见统计模型参数的后验分布的主要结果和计算方法。第四章和第五章分别介绍了“贝叶斯统计推断”和“贝叶斯统计决策”的内容。第六章介绍了贝叶斯统计计算的若干方法,包括蒙特卡洛方法和马尔可夫链蒙特卡洛(MCMC)方法以及相关统计软件的简介。本书的每一章附右大量的例题和习题,书末附有常用的几个表格和部分习题解答供读者查用。  大约可在54学时内讲授本书的第1章至第六章的主要内容,教师可根据学时需要选讲本书第1章至第六章的部分内容。书中标“*”号的章节可略去不讲,留给读者作为阅读材料。第六章例题中的R代码和部分例题的数据文件等可从作者个人主页下载。  作者在编写本书的过程中参考了J.O.Berger教授的《统计决策论及贝叶斯分析》和茆诗松教授编写的《贝叶斯统计》等书中的一些内容,以及《贝叶斯分析》一书中由张伟平博士编写的有关贝叶斯统计计算的一些内容。在此表示衷心感谢。  本书编写准备过程中,中国科学技术大学统计与金融系的几个研究生帮助完成了本书部分中文的录入和排版,作者对他们的辛勤工作表示真诚的感谢。高等教育出版社为本书的出版给予了大力支持。在此一并致谢。

上一篇: 从内存中加载DLL DELPHI版
下一篇: delphi执行一个外部程序,当外部程序结束后,delphi程序立即响应
aowo7144
博客等级 码龄10年 5粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值