十进制转换2进制

一、说明:
1.R(len,i)宏的含义
设len=8
序列 R值
i=0 8-0-1=7
i=1 8-1-1=6
i=2 8-2-1=5
i=3 8-3-1=4
i=4 8-4-1=3
i=5 8-5-1=2
i=6 8-6-1=1
i=7 8-7-1=0
2.
test1.txt 存放了
测试
两个汉字,如下图所示:
在这里插入图片描述
3.
程序编译器编码为UTF-8
二、代码

#include<stdio.h>
#include<string.h>
#define R(len,i)  (len-i-1)
#define ONE_BYTE 8
char u1[ONE_BYTE+1]="";
char u2[ONE_BYTE+1];
char u3[ONE_BYTE+1];
char path[256]="";
const char* dir="/storage/emulated/0";
const char* file="C4droid/test1.txt";
int makePath(const char* dir,const char* file);
int readFile(char* filename);
void rprint8bits(char* rstr,char* ostr);
void toBinary8Byte(int _1Decimal,char * _8BitStr);
int main()
{
    
    
	int n=0;
	n=makePath(dir,file);
	printf("%d,%s\n",n,path);
	printf("------------------------\n");
	readFile(path);
	printf("------------------------\n");
	toBinary8Byte(8,u1);
	printf("------------------------\n");
	rprint8bits(u2,u1);
}
int makePath(const char* dir,const char* file)
{
    
    
	strcpy(path,dir);
	strcat(path,"/");
	strcat(path,file);
	return strlen(path);
}
int readFile(char* filename)
{
    
    
	FILE * f;
	int i=0;
	char cc;
	f=fopen(filename,"r");
	if(f==NULL)
	{
    
    
		printf("open %s error.\n",filename);
		return -1;
    }
    for(;!feof(f);i++)
    {
    
    
    	cc=fgetc(f);
        //putchar(cc);
        printf("%d %c\n",cc,cc);
    }
    fclose(f);
}

void toBinary8Byte(int _1Decimal,char * _8BitStr)
{
    
    
	int i=0;
	int quotient=0;
	int remain=0;
	int decimal=_1Decimal;
	memset(_8BitStr,0,sizeof(char)*ONE_BYTE+1);
	do
    {
    
    
    	quotient=decimal/2;
         remain =decimal%2;
         _8BitStr[i]=remain;
         printf("%d %d [%c]\n",quotient,remain,_8BitStr[i]);
         i++;
         decimal=quotient;
    }while(quotient!=0);
    printf("%s\n",_8BitStr);
}
/*
rstr reverse string.
ostr original string
*/
void rprint8bits(char* rstr,char* ostr)
{
    
    
	int i=0;
	int len=8;
	for(;i<len;i++)
	{
    
    
		rstr[R(len,i)]=ostr[i];
    }
    for(i=0;i<len;i++)
    {
    
    
    	printf("%d",rstr[i]);
    }
}

三、测试结果
程序测试结果

猜你喜欢

转载自blog.csdn.net/lihongtao8209/article/details/119834623