Discuz! Board

 找回密码
 立即注册
查看: 385|回复: 2

高精度16to2

[复制链接]

574

主题

758

帖子

243万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
2435189

烈空座 Lv:100
发表于 2023-4-16 12:09:21 | 显示全部楼层 |阅读模式
[C] 纯文本查看 复制代码
#include<bits/stdc++.h>
using namespace std;

void g_16to2()//高精度16进制转2进制 
{
	int n=0;
	char a[1000];
	int b[4000];
	int temp;
	cin>>a;
	
	for(int i=0;i<strlen(a);i++)
	{
		if(a[i]<='9')	temp=a[i]-'0';
		else if((a[i]<='Z')&&(a[i]>='A'))	temp=a[i]-'A'+10;
		else if((a[i]<='z')&&(a[i]>='a'))	temp=a[i]-'a'+10;
		
		b[n+3]=temp%2;
		b[n+2]=temp/2%2;
		b[n+1]=temp/2/2%2;
		b[n]=temp/2/2/2%2;
		n+=4;
	}
	
	int flag=1;
	for(int i=0;i<n;i++)
	{
		if((flag==1)&&(b[i]==0)){}
		else
		{
			cout<<b[i];
			flag=0;
		}	
	}
}

int main()
{
	g_16to2();
}

回复

使用道具 举报

20

主题

33

帖子

3458

积分

论坛元老

Rank: 8Rank: 8

积分
3458

小火马 Lv:11
发表于 2023-4-16 12:29:27 | 显示全部楼层
#include<bits/stdc++.h>
using namespace std;

void g_16to2()//高精度16进制转2进制
{
    int n=0;
    char a[1000];
    int b[4000];
    int temp;//信息中转站temp
    cin>>a;
     
    for(int i=0;i<strlen(a);i++)//循环
    {
        if(a[i]<='9')    temp=a[i]-'0';//16进制中0到9的可能
        else if((a[i]<='Z')&&(a[i]>='A')) temp=a[i]-'A'+10;//16进制中大于10的可能
        else if((a[i]<='z')&&(a[i]>='a')) temp=a[i]-'a'+10;
         
        b[n+3]=temp%2;//转成2进制的每一位
        b[n+2]=temp/2%2;
        b[n+1]=temp/2/2%2;
        b[n]=temp/2/2/2%2;
        n+=4;
    }
     
    int flag=1;
    for(int i=0;i<n;i++)
    {
        if((flag==1)&&(b[i]==0)){}//判断是否全为1或0
        else
        {
            cout<<b[i];//输出
            flag=0;
        }   
    }
}

int main()
{
    g_16to2();//运行主函数
}
回复

使用道具 举报

574

主题

758

帖子

243万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
2435189

烈空座 Lv:100
 楼主| 发表于 2023-4-16 20:50:29 | 显示全部楼层
不错哦
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|DiscuzX

GMT+8, 2025-2-13 02:06 , Processed in 0.054619 second(s), 32 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.. 技术支持 by 巅峰设计

快速回复 返回顶部 返回列表