c语言-输入一个十进制整数,依次转换成2到16进制数

问题描述

输入一个十进制整数,依次转换成2到16进制数

求大神帮帮忙做一下 我刚刚学C语言 程序代码 弄了好久都没弄出来 大神帮忙编一个程序代码 ,谢谢了

解决方案

#include <iostream>
using namespace std;
char metachar[] = "0123456789abcdef";

void tobasen(int x, int n)
{
    if (x > 0)
    {
        tobasen(x / n, n);
        cout << metachar[x % n];
    }
}

int main()
{
    int x = 100;
    for (int i = 2; i <= 16; i++)
    {
        cout << i << "进制";
        tobasen(x, i);
        cout << endl;
    }
}

2进制1100100
3进制10201
4进制1210
5进制400
6进制244
7进制202
8进制144
9进制121
10进制100
11进制91
12进制84
13进制79
14进制72
15进制6a
16进制64

解决方案二:

http://codepad.org/9b1Rhbl1
在线编译验证。

另外,你可以将int x = 100;修改为
int x = 0;
cout << "please enter a number in base 10" << endl;
cin >> x;
实现用户输入(在线编程环境没法输入,所以直接指定了100,好让你看到结果)

解决方案三:

百度一下
http://www.2cto.com/kf/201403/287492.html

解决方案四:

请参考以下代码,转二进制的,如果要转八或十六进制,直接修改一下代码即可

 #include <stdio.h> 

int binaryNum[16];  //存放转换后得到的二进制码
int count=0;  //计数十进制整数被2除的次数
int oneCount=0;  //得到的二进制码中1的个数 

void main(){
  int num;
  printf("输入一个十进制的整数:");
  scanf("%d",&num);  

  while( (num/2) != 1 ){  //判断条件为:除以2之后的商不等于1
    binaryNum[count] = num%2;  //取余后的数字存入数组
    num /= 2;  //num = num/2; 进行下一轮的判断
    count++;  //此变量用来指定数组下标
  }
  binaryNum[count+1] = 1;  //最后一次除法做完以后,剩下的商一定是1,所以在最后手动添加一个1 

  printf("二进制数值为:"); 

}

解决方案五:

搞清原理,慢慢的写,然后debug,就么问题,自己动动手

解决方案六:

搞清原理,慢慢的写,然后debug,就么问题,自己动动手

解决方案七:


void print_2(int val2)
{
    unsigned char *p = (unsigned char*)&val2 + 3; //从低位到高位,低端字节计算机
    for(int k = 0; k <= 3; k++)
    {
        int val2 = *(p-k);
        for (int i = 7; i >= 0; i--)
        {
            if(val2 & (1 << i))
                printf("1");
            else
                printf("0");
        }
        printf(" ");
    }
}

int main()
{
    int a;
    scanf("%d", &a);
    printf("十六进制为 : %x n", a);
    printf("二进制为 :");
    print_2(a);
}

解决方案八:

 int Change(char NumStr[],int num,int system);
int main()
{
    int num,BitNum;
    char NumStr[32];
    scanf("%d",&num);
    for(int i=2;i<17;i++)
    {
        BitNum=Change(NumStr,num,i);
        for(;BitNum!=-1;BitNum--)
            printf("%c",NumStr[BitNum]);
        printf("n");
    }
    return 0;
}
int Change(char NumStr[],int num,int system)
{
    int i=0;
    while(num != 0)
    {
        NumStr[i] = num%system;
        if(NumStr[i]<10)
            NumStr[i]+='0';
        else
        {
            NumStr[i]+='A';
            NumStr[i]-=10;
        }
        num/=system;
        i++;
    }
    return i-1;

}
时间: 2024-09-28 04:53:32

c语言-输入一个十进制整数,依次转换成2到16进制数的相关文章

十进制转换成十六进制和16进制转2进制的实现

#include <stdio.h> #include <stdlib.h> #include <string.h> #include <locale.h> int main() { int i,v; char bs[33]; char b[33]; char hs[9]; char h[9]; char s[4]; char *e; // 十进制整数转二进制串: i=1024; ltoa(i,b,2); sprintf(bs,"%032s&quo

实战项目开发细节:C语言分离一个16进制数取出相应的位1或0

最近在公司开发一个关于钢琴的PCBA项目,项目大概是这样的,完成各种功能的测试,准备去工厂量产的时候可以通过软件快速甄别硬件是否短路,断路等问题.       其中,甄别好坏的方法是通过比如按键,或者其它的操作然后响应音频信号的输出来甄别的,那到底原理是怎么样的呢?       音频信号定制为如果是0则输出1000hz,如果是1则输出3000hz.       音频信号是一个16进制数,比如0xfd----->1111 1101        那么它的输出应该是这样的,从左边最高位开始,输出30

c++中 int十进制数如何转int 16进制数

问题描述 c++中 int十进制数如何转int 16进制数 例如,我有int a = 100:但是我要获得int b = 0x100:如何把a转换成b. 解决方案 你这个只能是转成16进制字符串,如果是数值的话,你可以直接这样写,在内存中,不管什么进制,都是以二进制表示 解决方案二: int转6位16进制数. 解决方案三: 不妨看看 char *itoa( int value, char *string,int radix); 第三个参数是进制 解决方案四: 可以先转换成字符串,然后通过字符串再

c++-C++/C输入16进制数,转换为8进制,怎么做?多谢各路大神

问题描述 C++/C输入16进制数,转换为8进制,怎么做?多谢各路大神 C++能不能用控制输入流的方法做到这个呢?多谢各路大神 之前看到用字符串做的 好麻烦 能不能用输入流的功能做? 解决方案 用字符串并不麻烦: #include <iostream> int val(char * hex) { int n = 0; while (*hex != '') { if (*hex >= 'A' && *hex <= 'F') { n *= 16; n += *hex -

编程题-求大神破解一个算法,手机号转为6位数的16进制的数好像是!!

问题描述 求大神破解一个算法,手机号转为6位数的16进制的数好像是!! 输入 -------------------------**输出** 18019617815-------------C90381 18012509150-------------32ECB9 18120150106@njxy-----CC6AAF 18120150151@njxy-----F2F3F6 求大神能看出来这是什么算法,怎么计算的

..............如何把一组16进制数分别截取转换成ASCII

问题描述 如何把一组16进制数分别截取转换成ASCII比如一个数组中包括"202020302020203530"如何把"20202030"转换成ASCII然后再把"20203530"转换成ASCII 解决方案 解决方案二:string[]array=str.Split('');foreach(stringsinarray){intn=int.Parse(s,System.Globalization.NumberStyles.HexNumber);

查找字符串数组中16进制数,并转换【原创】

  查找字符串数组中16进制数,并转换 #include <stdio.h> #include <stdlib.h> #include <string.h> void string_to_hex(unsigned char* input, int input_len, unsigned char* output, int output_len) { unsigned char tmp; int i; if (input_len > output_len*2) re

java中进制的转换,Byte与16进制的转换方法_java

java中对于进制的转换有很多方式,其中对于常见的基本的二进制 八进制 十进制 十六进制等的转换有对于的包装类实现,不需要通过二外的算法来进行实现,具体如下: 首先关于最简单的二进制转换的方法有: 十进制转成十六进制: String Integer.toHexString(int i) 十进制转成八进制 String Integer.toOctalString(int i) 十进制转成二进制  String Integer.toBinaryString(int i) 十六进制转成十进制 Inte

进制转换-java怎么把一个数组里面的16进制值转换成8进制,我想先把16进制转成2进制再转8进制

问题描述 java怎么把一个数组里面的16进制值转换成8进制,我想先把16进制转成2进制再转8进制 java怎么把一个数组里面的16进制值转换成8进制,我想先把16进制转成2进制再转8进制,但是老是运行出错.大神们能不能给个小例子解释一下,谢谢 解决方案 http://blog.csdn.net/vanezuo/article/details/6556768 解决方案二: 使用函数啊,你找一下,Java有相应的函数能做到 解决方案三: 如果你的程序出错,你贴出你的程序才知道. 也可以参考我给你的