多种进制转化 C/C++语言

多种进制转化 C/C++语言

二进制转十六进制法:

C语言代码如下:

#include<stdio.h>
#include<string.h>
int main(){
	int N,n,k,t,i,j,m;
	char a[10005];
	int b[10005]={0};
	scanf("%d",&N);
	while(N--){
		scanf("%s",&a);
		n=strlen(a);
		for(i=0;i<n;i++)
			b[i]=0;
		k=0;
		t=1;
		m=0;
		for(i=n-1;i>=0;i--){
	    	b[k]+=(a[i]-'0')*t;
			t*=2;
			m++;
			if(m%4==0){
				k++;
				t=1;
			}
		}
		for(i=0;i<n;i++){
			if(b[i]>=10){
				switch(b[i]){
				case 10 : b[i]='A'; break;
				case 11 : b[i]='B'; break;
				case 12 : b[i]='C'; break;
				case 13 : b[i]='D'; break;
				case 14 : b[i]='E'; break;
				case 15 : b[i]='F'; break;
				}
			}
		}
		for(i=k;i>=0;i--){
			if(b[i]!=0){
				for(j=i;j>=0;j--){
			if(b[j]>=65 && b[j]<=70 )
				printf("%c",b[j]);
			else printf("%d",b[j]);
				}
				break;
			}
		}
			if(i==-1) printf("0");
		printf("\n");
	}
}

十进制转任意进制:

C代码如下:

#include <stdio.h>
int main(){
	int x,p,i; //x为十进制数,p为目标进制大小 
	scanf("%d",&x);
	scanf("%d",&p);
	int a[100]; //存放余数 
	int count=0;
	do{
		a[count++]=x%p;
		x=x/p;
	}while(x!=0);//当商不为0时进行循环 
	
	for(i=count-1;i>=0;i--){
		printf("%d",a[i]);
	}
} 

任意进制转十进制:

C++代码如下:

//任意进制转十进制
#include <stdio.h>
int main(){
	int x,p;   //x输入数字  p该数的进制数  
	scanf("%d",&x);
	scanf("%d",&p);
	int y=0,product=1;
	while(x!=0){
		y=y+(x%10)*product;
		x=x/10;
		product=product*p;
	}
	printf("%d",y);
	return 0;
} 

二进制转八,十,十六进制

C语言代码如下:

#include<stdio.h>
#include<string.h>
int main()
{
int s=0,i,n;

char a[8];

printf("输入一个二进制数");

gets(a);

n=strlen(a);        //字符串长度n代表输入了几位二进制数

for(i=0;i<n;i++)    //循环检查输入二进制数的1

{

if(a[i]=='1')         //如果为1,开始计算转换为十进制

s=s+pow(2,n-i-1);continue;

}

printf("输出的八进制数为%o\n",s);   //%o输出八进制 
 printf("输出的十进制数为%d\n",s); //%d输出十进制
  printf("输出的十六进制数为%x\n",s);//%x输出十六进制 
}
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 生成条形码是一种常见的需求,可以通过C语言库来实现。C语言是一种高效、稳定的编程语言,因此,使用C语言编写条形码生成库可以提高生成效率并保证代码的稳定性。 生成条形码的过程主要包括:将数据编码转换为条形码符号、加入校验位和开始和结束符号。C语言库可以使用多种算法和方法来实现这些过程,如用位运算实现校验位的计算和使用二进制数组实现条形码的绘制等等。 通过使用C语言库生成条形码,可以将生成过程封装在库中,方便其他程序调用,提高开发效率。同时,使用C语言也可以保证生成的条形码的兼容性和可靠性。 总的来说,生成条形码的C语言库是一种非常实用的编程工具,具有高效、稳定、兼容性和可靠性等优势。通过使用C语言生成条形码,可以轻松应对各种生成需求,提高软件开发效率,并帮助用户更好地实现各种条形码生成相关工作。 ### 回答2: 生成条形码的C语言库是用于将一串数字或字符转化为条形码图像的工具。条形码是一种广泛应用于商品、物流等领域的编码方式,它可以帮助快捷地识别不同的物品,提高生产效率和准确度。 生成条形码的C语言库通常包括生成条形码的算法和图像处理的函数。用户可以通过调用库中提供的函数来传入需要转化的数字或字符,处理后得到相应的条形码图像。 在实现生成条形码的C语言库时,需要考虑多方面的因素。比如数据的处理方式、图像输出的格式、容错率、条形码类型等等。因此在编写库的过程中,需要深入了解标准的条形码转换算法,同时将实现时的各种参数考虑周全,在图像处理、格式转换等方面实现稳定、高效的算法。 总的来说,生成条形码的C语言库是一项在商业、物流等领域中非常实用的工具,它对于提高生产效率和准确度具有重要的作用。 ### 回答3: 生成条形码的C语言库通常包括一些基本的函数和数据结构,用于处理条码数据和图形输出。其中,最常见的条码类型包括EAN-8、EAN-13、UPC-A、Code 39、Code 128等。下面是一个简单的C语言函数来生成EAN-13格式的条码: ```c void ean13(char* code, char* filename) { int bars[95][7] ={ { 0, 0, 0, 1, 1, 0, 1 }, // 0 { 0, 0, 1, 1, 0, 0, 1 }, // 1 { 0, 0, 1, 0, 0, 1, 1 }, // 2 { 0, 1, 1, 1, 1, 0, 1 }, // 3 { 0, 1, 0, 0, 0, 1, 1 }, // 4 { 0, 1, 1, 0, 0, 0, 1 }, // 5 { 0, 1, 0, 1, 1, 1, 1 }, // 6 { 0, 1, 1, 1, 0, 1, 1 }, // 7 { 0, 1, 1, 0, 1, 1, 1 }, // 8 { 0, 0, 0, 1, 0, 1, 1 } // 9 }; if(strlen(code) != 13) return; // 条码号码必须为13位数字 // 计算校验和 int check_sum = 0; for(int i=0; i<12; i+=2) check_sum += code[i] - '0'; check_sum *= 3; for(int i=1; i<12; i+=2) check_sum += code[i] - '0'; check_sum = (10 - check_sum % 10) % 10; // 将条码数据转换为图形码 int len = strlen(code); int width = 95 * 7 + 2 * 6 + 3 * 9; int height = 84; unsigned char *image = (unsigned char*) calloc(width * height, sizeof(unsigned char)); int x = 0; for(int i=0; i<len; i++) { if(i == 0) { // 起始符 for(int j=0; j<3; j++) { int check = (j == 0) ? 2 : 1; for(int k=0; k<6; k++, x++) image[x] = bars[check][k]; } } else if(i == 6) { // 中心符 for(int k=0; k<7; k++, x++) image[x] = 1; } else if(i == 12) { // 结束符 for(int j=0; j<3; j++) { int check = (j == 2) ? code[12] - '0' : check_sum; for(int k=0; k<6; k++, x++) image[x] = bars[check][k]; } } else { // 数字 int check = code[i] - '0'; for(int k=0; k<7; k++, x++) image[x] = bars[check][k]; } x += 9; // 加入空格 } // 保存图像到文件中 stbi_write_png(filename, width, height, 1, image, width); free(image); } ``` 这段代码中,`bars`数组包含了每个数字0-9对应的7个条码线的编码方式,根据这些数据可以生成任意EAN-13格式的条码。转换算法依据ISO 7064:1983规范计算校验和,用于检验输入的条码数据是否合法。图像数据使用了stb_image库来生成PNG格式的输出文件。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Jeff one

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值