C++将文件用二进制读出转化为十进制存储

zxesi 2007-03-20 10:31:45
现在有一个二进制的文件存储在硬盘上(实际上每一个文件在硬盘上的存储方式都是二进制的),现在我需要将它按照8位二进制读出,然后转换成十进制的(就是将0x00~0xFF读成0~255的数),并且将这些读出的数写到一个文件中存储到硬盘上。读出和写入的文件(名)都可以自己选择

求助,这个问题已经困扰我好长时间了,请那位高手帮忙解决一下
...全文
321 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
lookforyou 2007-03-20
  • 打赏
  • 举报
回复
FILE *fpRead = fopen("read.txt", "r");
FILE *fpWrite = fopen("write.txt", "w");

char szReadBuffer[1024];
char szDec[4];
size_t uReadCount = 0;

szDec[3] = 0;

do
{
uReadCount = fread(szReadBuffer, 1, sizeof(szReadBuffer) / sizeof(szreadBuffer[0]), fpRead);
for (size_t i = 0; i < uReadCount; ++i)
{
HexToDec(szReadBuffer[i], szDec);
WriteToFile(fpWrite, szDec);
}
}
while (uReadCount > 0);

fclose(fpWrite);
fclose(fpRead);
lookforyou 2007-03-20
  • 打赏
  • 举报
回复
void HexToDec(char chHex, char szDec[])
{
static const char chBase10 = (char)10;
static const char chBase100 = (char)100;

szDec[0] = chHex / chBase100;
szDec[1] = (chHex - szDec[0] * chBase100) / chBase10;
szDec[2] = chHex - szDec[0] * chBase100- szDec[1] * chBase10;

szDec[0] += '0';
szDec[1] += '0';
szDec[2] += '0';
}

void WriteResultToFile(FILE* fp, char szDec[])
{
if (fp)
{
for (int i = 0; szDec[i] != 0; ++i)
{
if (szDec[i] != '0')
fprintf(fp, "%d,", szDec[i]);
}
fprintf(fp, "\n");
}
}

65,187

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧