数据转换(字节数组转文件、文件转字节数组、16进制字符转字节数组、字节数组转16进制字符)
字节数组转文件
procedure ByteArrayToFile(const ByteArray: TByteDynArray;const FileName: string);
varCount: integer;F: file of Byte;pTemp: Pointer;
beginAssignFile(F, FileName);Rewrite(F);tryCount := Length(ByteArray);pTemp := @ByteArray[0];BlockWrite(F, pTemp^, Count);finallyCloseFile(F);end;
end;
文件转字节数组
function FileToByteArray(const FileName: string): TByteDynArray;
constBLOCK_SIZE = 1024;
varBytesRead, BytesToWrite, Count: integer;F: file of Byte;pTemp: Pointer;
beginAssignFile(F, FileName);Reset(F);tryCount := FileSize(F);SetLength(Result, Count);pTemp := @Result[0];BytesRead := BLOCK_SIZE;while (BytesRead = BLOCK_SIZE) dobeginBytesToWrite := Min(Count, BLOCK_SIZE);BlockRead(F, pTemp^, BytesToWrite, BytesRead);pTemp := Pointer(LongInt(pTemp) + BLOCK_SIZE);Count := Count - BytesRead;end;finallyCloseFile(F);end;
end;
16进制字符转字节数组
function HexStrToByteArray(const HexStr: string): TByteDynArray;
varaByte: TByteDynArray;i: Integer;
beginResult := nil;trySetLength(aByte, Length(HexStr) div 2);for i := 1 to Length(HexStr) div 2 doaByte[i - 1] := StrToInt('$' + HexStr[i * 2 - 1] + HexStr[i * 2]);Result := aByte;excepton e: Exception dobeginResult := nil;end;end;
end;
字节数组转16进制字符
function ByteArrayToHexStr(const ByteArray: TByteDynArray): string;
vari: Integer;
beginResult := '';tryfor i := 0 to Length(ByteArray) - 1 doResult := Result + Format('%x', [ByteArray[i]]);excepton e: Exception dobeginResult := '';end;end;
end;
字符转Ascii
ord('待转').ToHexString
utf8转gbk
gbk_str: AnsiString;
gbk_str := Utf8ToAnsi(utf8_str);
字符串转换成 UTF8 编码
function ToUTF8Encode(str: string): string;
varb: Byte;
beginfor b in BytesOf(UTF8Encode(str)) doResult := Format('%s%%%.2x', [Result, b]);
end;
UTF8 编码转换成字符串
function DecodeUtf8Str(const S: UTF8String): WideString;
varlenSrc, lenDst: Integer;
beginlenSrc := Length(S);if (lenSrc = 0) thenExit;lenDst := MultiByteToWideChar(CP_UTF8, 0, Pointer(S), lenSrc, nil, 0);SetLength(Result, lenDst);MultiByteToWideChar(CP_UTF8, 0, Pointer(S), lenSrc, Pointer(Result), lenDst);
end;
数据转换(字节数组转文件、文件转字节数组、16进制字符转字节数组、字节数组转16进制字符)相关推荐
- 1.6 Java字节流的使用:字节输入/输出流、文件输入/输出流、字节数组输入/输出流
InputStream 是 Java 所有字节输入流类的父类, OutputStream 是 Java 所有字节输出流类的父类, 它们都是一个抽象类,因此继承它们的子类要重新定义父类中的抽象方法. 下 ...
- php返回图片二进制字节数组,获取图片文件的二进制数组
这段时间在项目里面遇到一个问题,c#后台调用php的webservice传送图片到php服务端,于是采用了传递二进制数组的方法,方法如下(部分代码): dName是图片文件的名称, string fp ...
- 较简单的字节输入流输出流拷贝文件
import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream;/*** 较简单的字节输入流输 ...
- 【java笔记】IO流(1):IO流概述,字节输出/输入流读写文件
IO概述: I: input( 读取 ) 把硬盘中的数据,读取到内存中使用 O: output(写入) 把内存中的数据,写入到硬盘中保存 流:数据(字符,字节)1个字符=2个字节 ,1个字节=8个二 ...
- 字节流转文件,文件转字节流,字节流和文件互转
前言:项目有个需求,就是将文件转换为字节流,然后转成字符串,为了验证文件是否正确转换为字节流,从网上找了这个工具类,由于不知道是哪里找的,暂时些微原创,有需要的,代码直接ctrl c,ctrl v即可 ...
- 字节输入输出流,文件输入输出流
1.字节输入输出流 1.1 字节输入流 InputStream 类及其子类的对象表示字节输入流,InputStream 类的常用子类如下. ByteArrayInputStream 类:将字节数组转换 ...
- Java入门学习第十七天——字节流读写文件、字节缓冲流拷贝文件
字节流读写文件 字节流拷贝文件-按单个字节读写 FileInputStream:普通的字节输入流,用来读取数据的 构造方法: public FileInputStream(String pathn ...
- python获取文件字节数_python关于文件操作中的字符个数和字节数
记得刚开始学习python文件操作写文件的时候有个问题,很奇怪.最后知道了就是字节数的原因. 我们先来看个例子. 新建个文件存为utf-8命名为0117utf-8.txt记得去掉BOM头. 我们用r+ ...
- python读取指定字节_python读取指定字节及位置的文件内容
如今有一个xl.txt文档,内容以下:函数 AAAAAAAABBBBBBBBCCCCCCCCDDDDDDDDspa 能够经过open()函数来打开文件,好比:文档 >>> f = o ...
- linux 取文件字节数,如何在Linux上的C中获取文件中的字符数(而不是字节数)
我想获取文件中的字符数.字符我的意思是"真正的"字符,而不是字节.假设我知道文件编码. 我尝试使用mbstowcs()但它不起作用,因为它使用系统区域设置(或使用setlocale ...
最新文章
- 中国闪存联盟三百大行动成果发布 IBM存储助力企业突破数据临界点
- 如何将代码优雅的放在WORD文档中?
- 皮一皮:据说金庸老爷子的凌波微步已被证实存在并已经广为流传...
- 53个要点提高PHP编程效率
- laravel CURD ORM
- PriorityBlockingQueue用法
- 用ASP实现隐藏链接方法
- KubeSphere 3.1.0 GA:混合多云走向边缘,让应用无处不在
- 282021年湖南高考成绩查询,2010年湖南高考成绩查询
- (转)git遇到的问题之“Please make sure you have the correct access rights and the repository exists.”...
- 商务与经济统计学习 --多个比率的比较、独立性及拟合优度检验
- 视频教程-汇编语言程序设计IV-其他
- matlab画图函数双精度,Matlab中图像函数大全2_matlab函数大全
- Android开发-仿网易云音乐播放器样式设计与实现
- VTN4系列多通道振弦模拟信号采集仪模拟通道值和振弦传感器温度通道值修正
- Springboot集成rabbitmq
- jquery closest()的用法
- 学计算机进中央电视台,央视评中科院博士论文致谢走红 从山坳穷学生到计算机博士...
- excel中批量自动生成一个月内日期和时间
- 电脑桌面右下方点击失灵,其他桌面区域正常