C语言:十进制进制转换为其他进制(思想:查表法)

//

//  main.c

//  Hex conversion

//

//  Created by ma c on 15/7/22.

//  Copyright (c) 2015年 bjsxt. All rights reserved.

//  要求:十进制向任意进制之间的转换(查表法)。

#include <stdio.h>

//十六进制的转换

void ToHex(int num)

{

int temp;

char chs[8];//定义一个临时容器,长度为8,8X4=32位比特

int pos=8;  //定义一个索引

char ch[] = {‘0‘,‘1‘,‘2‘,‘3‘,

‘4‘,‘5‘,‘6‘,‘7‘,

‘8‘,‘9‘,‘a‘,‘b‘,

‘c‘,‘d‘,‘e‘,‘f‘};

printf("%d的十六进制是:",num);

while(num!=0)

{

temp = num & 15;

chs[--pos]= ch[temp];     //将查表中的数据存放到临时容器中。

num = num >> 4;           //向左移动次低四位

};

for(int x=pos;x<8;x++)

{

printf("%c",chs[x]);

}

printf("\n");

}

//八进制的转换

void ToOct(int num)

{

int temp;

char chs[11];//定义一个临时容器

int pos=11;  //定义一个索引

char ch[] = {‘0‘,‘1‘,‘2‘,‘3‘,

‘4‘,‘5‘,‘6‘,‘7‘,

‘8‘,‘9‘,‘a‘,‘b‘,

‘c‘,‘d‘,‘e‘,‘f‘};

printf("%d的八进制是:",num);

while(num!=0)

{

temp = num & 7;

chs[--pos]= ch[temp];     //将查表中的数据存放到临时容器中。

num = num >> 3;           //向左移动次低三位

};

for(int x=pos;x<11;x++)

{

printf("%c",chs[x]);

}

printf("\n");

}

//二进制的转换

void ToBinary(int num)

{

int temp;

char chs[32];//定义一个临时容器

int pos=32;  //定义一个索引

char ch[] = {‘0‘,‘1‘,‘2‘,‘3‘,

‘4‘,‘5‘,‘6‘,‘7‘,

‘8‘,‘9‘,‘a‘,‘b‘,

‘c‘,‘d‘,‘e‘,‘f‘};

printf("%d的二进制是:",num);

while(num!=0)

{

temp = num & 1;

chs[--pos]= ch[temp];     //将查表中的数据存放到临时容器中。

num = num >> 1;           //向左移动次低一位

};

for(int x=pos;x<32;x++)

{

printf("%c",chs[x]);

}

printf("\n");

}

int main(int argc, const char * argv[])

{

ToHex(60);

ToOct(60);

ToBinary(60);

printf("\n");

return 0;

}

时间: 2024-10-04 23:41:52

C语言:十进制进制转换为其他进制(思想:查表法)的相关文章

十进制转换成其它进制的通用写法(查表法)

 //十进制转换成其它进制的通用写法(查表法)  class Transform  { public static void main(String[] args) {    toHex3(60);    System.out.println();    toOctal2(20);    System.out.println();    toBinary2(6); }  public static void toAny(int num,int base,int offSet)  {   char

从M进制转换为N进制

/// <summary> /// 从M进制转换为N进制 /// </summary> internal class MBase2NBase { /// <summary> /// M进制值字符串 /// </summary> private string MValue = "123"; /// <summary> /// 除法商 /// </summary> private string Quotient = n

convert time-24小时制转换为12小时制

convert time-24小时制转换为12小时制,允许重复计算: //convert time #include<iostream> using namespace std; void get_time(int& hours,int& minutes); void convert_time(int& hours,char& ampm); void show_time(int hours,int minutes,char ampm); int main() {

十进制和n进制的转换(10进制转换为36进制)

答案如下: void Convert() { map<int ,string> maps; maps[0]="0"; maps[1]="1"; maps[2]="2"; maps[3]="3"; maps[4]="4"; maps[5]="5"; maps[6]="6"; maps[7]="7"; maps[8]="8&quo

C语言定义一个整型变量转换为2进制数并输出出来

#include<stdio.h> int main() {     int a=12;       //定义一个需要转换的整型     char b[50];    //保存转化后到数组里面     _itoa_s(a,b,50,2);//转化为二进制     printf("%s\n",b);      //输出字符串 } 

用C++实现:将16进制转换为10进制

问题描述 从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出. 注:十六进制数中的10~15分别用大写的英文字母A.B.C.D.E.F表示. 1 #include<iostream> 2 #include<cmath> 3 #include<cstring> 4 using namespace std; 5 int main(void) 6 { 7 int n; 8 int temp; 9 char* arr = new char[9]; //

lua之m进制转换为n进制-任意进制转换算法

够无聊的写这个,为防止需要的人也无聊一遍,写个吧 算法有n种,但是,咱们一种就够用了 1 --数组倒序排列 2 local function orderByDesc( input ) 3 local output = {} 4 local count = #input 5 while count > 0 do 6 table.insert(output, input[count] ) 7 count = count -1 8 end 9 return output 10 end 11 12 --

c++中便捷的进制转换(输入16进制转换为10进制)

#include<iostream> using namespace std; int main() { int a,b; while(cin >> hex >> a >> b) { cout << dec << a+b << endl; } return 0; }

进制转换(查表法)

import java.util.*;public class Demo513{ public static void main(String []args) { toHex_2(60); } public static void toHex_2(int num) { char []chs={'0','1','2','3', '4','5','6','7', '8','9','A','B', 'C','D','E','F'}; char []arr=new char[8]; int pos=ar