背景
因为一些原因,产生了一些二进制数据,需要将其转换成为十六进制数据使用。考虑到正在学习C,所以试着用C语言的文件读写来完成这项工作。
程序
#include<stdio.h>
int two_trans_hex(char * byte)
{
int i, j, k;
i = j = k = 0;
for(i = 0; i < 9; i ++)
{
if(byte[i] != '\n')
{
j = byte[i] - '0';
printf("%dn", j);
k = k * 2 + j;
}
}
printf("\t");
return k;
}
int main(void)
{
FILE *fp1, *fp2;
int num = 0;
char string[9] = {0};
fp1 = fopen("D:\\file.txt", "r+");
fp2 = fopen("D:\\file_hex.txt", "w+");
while(fscanf(fp1, "%9c", string) != EOF)
{
num = two_trans_hex(string);
printf("%x\n", num);
fprintf(fp2, "%x\n", num);
}
fclose(fp1);
fclose(fp2);
return 0;
}
目标文件中八位二进制数据为一行,读取八个字符可以满足要求;但是fprintf()函数在执行的时候,遇到空格结束读取,而换行符是会被读取的,所以选择读取9个字符,并在转换程序中将换行符滤去。