曾经在大学时做过一个c的进制转换算法,那时由于技术的局限性,数值的大小受到限制(系统数据类型长度限制),多年以后,自己那台学习机陈旧后感觉要报废了,整理了一下里面的东西,偶尔在一个角落里发现了这个转换算法,觉得它还有改进的地方,可以让它功能更强大(当时想过要转换超长数值,但受系统数据类型的局限性、个人开发语言深度的认知、以及视界观的狭隘,没能想到可以解决计算超长数据的有效的方法),这里我会将多年前大学里写的那段,和我修改后的粘贴出来,以飨读者。
 
传入参数:
string x 是超大数的字符串格式,当然越大越能显示出本方法的威力。
int y 是将传入的十进制数(前面的字符串)转换为32位进制以内的其他进制,范围(2~32)
        
说明:说是超长数据,其实还是受到最大
数限制,负责会溢出,不过这个最大数真的是太太大了,估计还没诞生过的吧?!呵呵。
     static string DecimalismConversion(string x, int y)
{
Stack stack = new Stack(); int length = Int64.MaxValue.ToString().Length - ; while ( x!="")
{
string quotient = string.Empty;
string remainder = string.Empty;
int count = ;
Int64 i64 = ;
while (count * length < x.Length)
{
string str = x.Substring(count * length, Math.Min(length, x.Length - count * length));
i64 = Convert.ToInt64(remainder + str);
remainder = (i64 % y).ToString();
quotient += (i64 / y).ToString().PadLeft(str.Length, '');
count++;
}
Int64.TryParse(remainder, out i64);
if (i64 % y < ) stack.Push((char)(i64 % y + ));
else stack.Push((char)(i64 % y + ));
x = quotient.TrimStart(new char[] { ' ', '' });
} return new string(stack.ToArray());
}

以下这段是它的原身,现在想想就可笑,以前写程序设计(c语言),那么难看。

int main(int x,int y)
{
int i=;
char a[];
printf("Input:");
L:
scanf("%d %d",&x,&y);
if(x<=||y<=||y>=)
{
printf("Input error,input again:");
goto L;
}
while(x!=)
{
if(x%y<)
a=(char)(x%y+);
else
a=(char)(x%y+);
x=x/y;
}
for(i=i-;i>=;i--)
printf("%c",a);
putchar('\n');
}

C# 进制转换 (没有数值的长度限制)的更多相关文章

  1. python 数值系列-进制转换

    进制转换 前语: 如果您不通二进制,八进制,十六进制,请移步:http://www.360doc.com/content/17/0211/21/40101294_628326994.shtml 问题 ...

  2. [No000071]C# 进制转换(二进制、十六进制、十进制互转)

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  3. 进制转换( C++字符数组 )

    注: 较为简便的方法是用 整型(int)或浮点型(long.double 注意:该类型不一定能够准确存储数据) 来存放待转换的数值,可直接取余得到每一位数值 较为稳定的方法是用 字符数组储存待转换的数 ...

  4. java:数据结构(二)栈的应用(进制转换全收集)

    说到进制转换,java已经封装了基本的方法,在竞赛中使用封装的方法自然能节省大量时间 另一位仁兄介绍的封装好的方法: https://blog.csdn.net/m0_37961948/article ...

  5. Java基础(进制转换-)

    进制概述: 进制也就是进位计数制,是人为定义的带进位的计数方法(有不带进位的计数方法,比如原始的结绳计数法,唱票时常用的“正”字计数法,以及类似的tally mark计数). 对于任何一种进制---X ...

  6. C# 进制转换(二进制、十六进制、十进制互转)

    原文地址:https://www.cnblogs.com/icebutterfly/p/8884023.html C# 进制转换(二进制.十六进制.十进制互转)由于二进制数在C#中无法直接表示,所以所 ...

  7. java se系列(二) 关键字、注释、常量、进制转换、变量、数据类型转换、运算符

    1 关键字 1.1 关键字的概述 Java的关键字对java的编译器有特殊的意义,他们用来表示一种数据类型,或者表示程序的结构等,关键字不能用作变量名.方法名.类名.包名. 1.2 常见的关键字 备注 ...

  8. C# 进制转换(二进制、十六进制、十进制互转) 转载 https://www.cnblogs.com/icebutterfly/p/8884023.html

    C# 进制转换(二进制.十六进制.十进制互转)由于二进制数在C#中无法直接表示,所以所有二进制数都用一个字符串来表示例如: 二进制: 1010 表示为 字符串:"1010" int ...

  9. 11 JavaScript Number原始值&对象&科学记数法&范围&进制转换&溢出Infinity&NaN

    JavaScript Number对象 是经过封装的能处理数字值的对象 由Number()构造器创建 只有一种数字类型 可以使用也可以不使用小数点书写数字 JavaScript原始值与对象: 在Jav ...

随机推荐

  1. SpringMVC文件上传下载

    在Spring MVC的基础框架搭建起来后,我们测试了spring mvc中的返回值类型,如果你还没有搭建好springmvc的架构请参考博文->http://www.cnblogs.com/q ...

  2. 代码规范、GitHub提交源码的标准 答题人-杨宇杰

    1.格式与命名规范1.1 缩进 使用Tab缩进,而不是空格键1.2 换行 每行120字符 if,for,while语句只有单句时,如果该句可能引起阅读混淆,需要用" {"和&quo ...

  3. 黑马程序员_Java基础:序列化(Serializable)与反序列化

    ------- android培训.java培训.期待与您交流! ---------- 在学习IO中的ObjectOutputStream和ObjectInputStream时,会涉及到序列化和反序列 ...

  4. poi解析excel 03、07

    maven依赖 <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</a ...

  5. XAF How to show custom forms and controls in XAF (Example)

    XAF How to show custom forms and controls in XAF (Example) https://www.devexpress.com/Support/Center ...

  6. 获取edit焦点,打开和关闭软键盘

    打开: et_search.requestFocus(); et_search.setFocusable(true); et_search.setFocusableInTouchMode(true); ...

  7. 导入aar文件出错

    错误日志: > Could not resolve all dependencies for configuration ':app:_debugCompile'. > Could not ...

  8. String、String.valueOf、toString 它们三者的区别总结

    今天在使用这个的时候发现,他们三者好像在某些场所都是可以用的,但是不免会让人想到那既然它们三者这么的相似,那么总有些什么区别吧.我也在网上找了一些资料看.自己也看了API文档,就将他们三的区别总结一下 ...

  9. halcon算子

    halcon的算子列表   Chapter 1 :Classification 1.1 Gaussian-Mixture-Models 1.add_sample_class_gmm 功能:把一个训练样 ...

  10. 彻底理解ThreadLocal一

    synchronized这类线程同步的机制可以解决多线程并发问题,在这种解决方案下,多个线程访问到的,都是同一份变量的内容.为了防止在多线程访问的过程中,可能会出现的并发错误.不得不对多个线程的访问进 ...