进制转换问题
来源:互联网 发布:怎样才能做淘宝客推广 编辑:程序博客网 时间:2024/05/22 03:10
/* * 问题描述 给定n个十六进制正整数,输出它们对应的八进制数。 输入格式 输入的第一行为一个正整数n (1<=n<=10)。 接下来n行,每行一个由0~9、大写字母A~F组成的字符串,表示要转换的十六进制正整数,每个十六进制数长度不超过100000。 输出格式 输出n行,每行为输入对应的八进制正整数。 注意 输入的十六进制数不会有前导0,比如012A。 输出的八进制数也不能有前导0。 样例输入 2 39 123ABC 样例输出 71 4435274 */using System;using System.Text;class Program { string input = null; string pattern = "^(\\d|[a-fA-F])+$"; loop: Console.Write("\n请输入一个十六进制数:"); input = Console.ReadLine(); if (!Regex.IsMatch(input, pattern)) goto loop; input = Regex.Replace(input, "^0+(\\w+)$", "$1").ToUpper(); MyConversion myCvs = new MyConversion(); string result = myCvs.ToOther(myCvs.ToDecimal(16, input), 8); Console.WriteLine("***转换成八进制是:" + result); goto loop;}public class MyConversion{ // 使用查表法,一一对应 private readonly char[] data = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' }; // 定义字符缓冲区,存放转换后的字符串 private StringBuilder sb = null; /** * 10进制数字转相应进制 * * @param num * 待转换的十进制整数 * @param shift * 要转换的相应进制2,8... */ public String ToOther(int num, int shift) { sb = new StringBuilder(10); do { int n = num % shift; //sb.Insert(0, n > 9 ? (char)(n + 55) + "" : n + ""); sb.Insert(0, data[n]); num /= shift; //对应的右移位更高效 >> 1 >> 3 >> 4 } while (num > 0); return sb.ToString(); } public int ToDecimal(int shift, string strNum) { int sum = 0; int len = strNum.Length - 1; for (int i = 0; i <= len; i++) { char c = strNum[i]; int num = c >= 'A' ? c - 55 : c - 48; sum += ((int)Math.Pow(shift, len - i) * num); } return sum; }}下面附上一段java实现的最简单算法/* 任意进制间的转换 n 进制转 m 进制 String s = "2001201102"; 3进制转为5进制*/public class T1{ public static void main(String[] args) { String s = "2001201102"; int n = 0; for(int i=0; i<s.length(); i++){ n = n*3 + (s.charAt(i)-'0'); } System.out.println(n); String s2 = ""; for(;;){ if(n==0) break; s2 = (n%5) + s2; n = n / 5; } System.out.println(s2); }}
0 0
- 进制转换问题
- 进制转换问题
- 进制转换问题
- 进制转换问题!
- 进制转换问题
- 进制转换问题
- 进制转换问题
- 进制转换问题
- 进制转换问题
- 进制转换问题
- 进制转换问题
- 进制转换问题
- 进制转换问题
- 进制转换问题
- 进制转换问题
- 1022: 进制转换问题
- C++进制转换问题
- 大数进制转换问题
- Remove Duplicates from Sorted List --已出有序链表中的重复元素
- 选择排序和冒泡排序
- DOS命令将黑框中查询到的信息保存到TXT等文件中
- Remove Nth Node From End of List --移除链表中的倒数第k个元素
- andriod API文档打不开 google打不开
- 进制转换问题
- Java的串行化
- 无向图的连通分支
- Palindrome Number --回文整数
- 配置与管理NFS网络文件系统
- 黑马程序员-day12-多线程(线程间通信)
- python读文件
- xcode6_beta_2下载
- 无题