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;
switch(ch)
{
case '0':
data = 0;
break;
case '1':
data = 1;
break;
case '2':
data = 2;
break;
case '3':
data = 3;
break;
case '4':
data = 4;
break;
case '5':
data = 5;
break;
case '6':
data = 6;
break;
case '7':
data = 7;
break;
case '8':
data = 8;
break;
case '9':
data = 9;
break;
case 'a':
data = 10;
break;
case 'b':
data = 11;
break;
case 'c':
data = 12;
break;
case 'd':
data = 13;
break;
case 'e':
data = 14;
break;
case 'f':
data = 15;
break;
default:
break;
}
return data;
}
//pSrcFileName使用txt文本文档
void DataToFile(char *pSrcFileName,char *pDstFileName)
{
FILE *fToBeWrite = fopen(pDstFileName,"wb");
ifstream in(pSrcFileName);
unsigned char ch = 'a';
char chHigh;
char chLow;
int numHigh;
int numLow;
int num = 0;
while (in >> chHigh >>chLow)
{
numHigh = chToData(chHigh);
numLow = chToData(chLow);
num = numHigh * 16 + numLow;
ch = (unsigned char)num;
fwrite(&ch,1,1,fToBeWrite);
}
in.close();
fclose(fToBeWrite);
}
FileToData与DataToFile(优化版,txt为原始文件2倍大小)
最新推荐文章于 2024-10-10 14:52:51 发布