小弟初学 请高手指点 如何用vc读取一个十六进制的文件,有的数据还要翻译成十进制和阿斯科码?存入数组

文件为SWJDATA.DAT文件 文件格式是.dat

没有16进制、10进制之分,16进制、10进制只是显示方式不一样而已。
文件只分二进制还是文本文件,你那个文件可以以二进制方式打开,
printf("0x%02x", data[i]);//16进制显示
printf("0x%d", data[i]);//10进制显示追问

谢谢你的回答 ,能附点代码详细讲 解下吗?初学真的不知道如何下手,怎么把第一个行数据存入一个数组,一共十六个数据,到;结束,

追答

// aaa.cpp : Defines the entry point for the console application.

//


#include "stdafx.h"


#include <stdio.h>

#include <stdlib.h>


int main ()

{

FILE * pFile;

long lSize;

char * buffer;

size_t result;

pFile = fopen ( "SWJDATA.DAT" , "rb" ); // "rb":以二进制方式打开文件

if (pFile==NULL) {fputs ("File error",stderr); getchar();return -1;}

// 获取文件大小:

fseek (pFile , 0 , SEEK_END);

lSize = ftell (pFile);

rewind (pFile);

// 分配内存

buffer = (char*) malloc (sizeof(char)*lSize);

if (buffer == NULL) {fputs ("Memory error",stderr); getchar();return -2;}

// 将文件读入内存

result = fread (buffer,1,lSize,pFile);

if (result != lSize) {fputs ("Reading error",stderr); getchar();return -3;}

fputs ("The whole file is now loaded in the memory buffer. \n",stderr);

// 打印前十六个字节:

printf("Hex show:\n");

for(int i=0; i<16; i++)

{

printf("%02X ", (unsigned char)buffer[i]);

}

printf("\n");

printf("Dec show:\n");

for(int j=0; j<16; j++)

{

printf("%03d ", (unsigned char)buffer[j]);

}

printf("\n");

getchar();

// terminate

fclose (pFile);

free (buffer);

return 0;

}


温馨提示:答案为网友推荐,仅供参考
相似回答