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倍大小)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.