hex.cpp
来自「该算法可以成功的实现二进制到十六进制的转换。可以做为编码的子程序使用」· C++ 代码 · 共 77 行
CPP
77 行
#include <stdio.h>
#include <math.h>
#define IFILE_NAME "demo_V21_1.dat" //输入的文件名
#define OFILE_NAME "hex_demo_V21_1.dat"//输出的文件名
//#define FRAME 400 //一共有多少个帧
short temp[391],*p_temp=temp;
unsigned long int GetNumFrames (FILE* fp, unsigned long int blocksize)
{
unsigned long int position;
unsigned long int numFrames;
position = ftell(fp);
fseek(fp,0L,2);
numFrames = ftell(fp) / blocksize;
fseek(fp,position,0);
return(numFrames);
}
void main()
{
FILE *ifileP,*ofileP;
int i,j;
short con_binary[1566];
short d[4];
int num;
//if ((ofileP=fopen(OFILE_NAME,"r")) == NULL)
if((ifileP=fopen(IFILE_NAME,"rb"))==NULL)//以文本的形式打开
{
printf("cannot open this file!\n");
}
else printf("success to open the file!\n");
//if ((ofileP=fopen(OFILE_NAME,"w")) == NULL)
if ((ofileP=fopen(OFILE_NAME,"wb")) == NULL)//以二进制的文件打开
{
printf("Unable to open output file-%s\n",OFILE_NAME);
}
num=GetNumFrames(ifileP,2);
fread(con_binary,sizeof(short),num,ifileP);
for(i=0;i<int(num/4);i++)
{
for(j=0;j<4;j++)
{
d[j]=con_binary[j+i*4];
}
temp[i]=d[0]*8+d[1]*4+d[2]*2+d[3]*1;
if(temp[i]<10)
{
temp[i]=temp[i];
printf("%d",temp[i]);
//fprintf(ofileP,"%d",temp[i]);//写入文本文件
fwrite(&temp[i],sizeof(short),1,ofileP);//写入二进制文件
}
else
{
temp[i]=(char)(temp[i]+55);
printf("%c",temp[i]);
//fprintf(ofileP,"%c",temp[i]);//写入文本文件
fwrite(&temp[i],sizeof(short),1,ofileP);//写入二进制文件
}
}
printf("\n");
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?