FileToData与DataToFile(优化版,txt为原始文件2倍大小)

该博客介绍了一个从文件(FileToData)到数据(DataToFile)的转换过程,并提供了优化后的实现,使得转换后的txt文件大小是原始文件的两倍。在FileToData函数中,读取源文件内容并以十六进制格式写入目标文件。DataToFile函数则将包含十六进制数据的文本文件解码回其原始形式。转换过程中涉及字符到整数的映射和文件I/O操作。
摘要由CSDN通过智能技术生成
void FileToData(char *pSrcFileName,char *pDstFileName)
{
	FILE *pSrcFile = fopen (pSrcFileName, "rb" );
	FILE *pDstFile = fopen(pDstFileName,"wb");

	if (pSrcFile == NULL)
	{
		fputs ("Error: invalid source file!",stderr);
	}

	long lSize;
	unsigned char * buffer;
	size_t result;
	int i = 0;

	//获取文件大小
	fseek (pSrcFile , 0 , SEEK_END);
	lSize = ftell (pSrcFile);
	rewind (pSrcFile);

	// 分配内存存储整个文件 
	buffer = (unsigned char*) malloc (sizeof(unsigned char)*lSize);
	if (buffer == NULL)
	{
		fputs ("Memory alloc error!",stderr); 
	}

	//将文件拷贝到buffer中
	result = fread (buffer,1,lSize,pSrcFile);
	if (result != lSize)
	{
		fputs ("Reading error",stderr);
		exit (3);
	}

	for (i = 0; i < lSize; i++)
	{
		fprintf(pDstFile,"%.2x",buffer[i]);
	}

	// 关闭文件并释放内存
	fclose (pSrcFile);
	fclose(pDstFile);
	free (buffer);
}


int chToData(char ch)
{
	int data = 0;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值