首页 > 编程语言 >C#十进制与任意进制的转换

C#十进制与任意进制的转换

时间:2023-06-19 15:23:39浏览次数:45  
标签:进制 Val C# TargetRadix BaseChar ulong 十进制 string

/// <summary>
        /// 将十进制转换为指定的进制
        /// </summary>
        /// <param name="Val">十进制值</param>
        /// <param name="TargetRadix">目标进制</param>
        /// <param name="BaseChar">基数列表(长度必须大于源字符串进制,无I,O)</param>
        /// <returns></returns>
        public static string JinZhiConvert(ulong Val, int TargetRadix = 0, string BaseChar = "0123456789ABCDEFGHJKLMNPQRSTUVWXYZ")
        {
            if (TargetRadix == 0 && BaseChar.Length == 0) return "长度与基数不能同时为零";
            if (TargetRadix <= 0) TargetRadix = BaseChar.Length;
            List<string> r = new List<string>();
            do
            {
                ulong y = Val % (ulong)TargetRadix;
                r.Add(BaseChar[Convert.ToInt32(y)].ToString());
                Val = Convert.ToUInt64(Math.Floor(Val / (decimal)TargetRadix));
            } while (Val > 0);
            r.Reverse();
            return string.Join("", r.ToArray());
        }


        /// <summary>
        /// 将任意进制转化为十制
        /// </summary>
        /// <param name="Val">任意进制的字任串</param>
        /// <param name="SourceRadix">源字符串的进制</param>
        /// <param name="BaseChar">基数列表(长度必须大于源字符串进制,无I,O)</param>
        /// <returns></returns>
        public static ulong JinZhiConvert(string Val, int SourceRadix = 0, string BaseChar = "0123456789ABCDEFGHJKLMNPQRSTUVWXYZ")
        {
            ulong r = 0;
            if (BaseChar == "") return 0;
            if (SourceRadix == 0) SourceRadix = BaseChar.Length;
            List<char> v = Val.ToCharArray().ToList();
            v.Reverse();
            for (int i = 0; i < v.Count; i++)
            {
                int index = BaseChar.IndexOf(v[i]);
                if (index > -1)
                    r += Convert.ToUInt64(index * Math.Pow(SourceRadix, i));
            }
            return r;
        }

  

标签:进制,Val,C#,TargetRadix,BaseChar,ulong,十进制,string
From: https://www.cnblogs.com/chinasoft/p/17491245.html

相关文章

  • ResizeObserver loop limit exceeded报错解决方案
    ResizeObserverlooplimitexceeded报错解决方案项目接入前端感知系统,采集到很多ResizeObserverlooplimitexceeded错误。本地运行不是这个报错信息,当反复拖拽改变窗口大小时,本地运行错误信息如下:问题原因:element-ui中的table组件的引入如果在一个动画帧内,ResizeObserver不......
  • Error creating bean with name 'sqlSessionFactory' defined in class path resource
    项目启动报错原因分析背景:system模块一个月未重启过,今天重启报数据源问题原因:这里报错的原因是数据源配置问题解决:数据源配置在nacos中,拿该模块的nacos数据源配置与项目启动成功的模块的数据源配置进行对比,检查出不同,改为一样即可......
  • JavaScript中var、let、const的使用和区别
    var:var是声明变量的主要关键字,它的作用域是函数作用域函数作用域:意味着变量在函数内部声明是可见的,在函数外部声明是不可见的var声明的变量可以被重新声明和赋值,它可以在同一个作用于下多次声明同一个变量let:let的作用域是块作用域,块作用域可以是函数、条件判断等内部{......
  • 你曾遇到的某大厂奇葩问题:Android组件化开发,组件间的Activity页面跳转
    组件化开发有什么好处?1、当项目越来越大时,app的业务越来越复杂,会出现业务功能复杂混乱,各功能块、页面相互依赖,相互调用太多导致耦合度高,而采用组件化开发,我们就可以将功能模块合理的划分,降低功能耦合度。2、不采用组件化开发时,编译速度缓慢,修改一个页面布局编译一下还得等几分钟。......
  • 学不动也要学,Jetpack Compose入门到入坟
    前言在2019年的Google/IO大会上,亮相了一个全新的Android原生UI开发框架JetpackCompose。与IOS的SwiftUI一样,JetpackCompose也是一个声明式的UI框架,随着Android和IOS两大移动平台相继推出了自己平台专属的声明式UI框架,标志着整个行业已开始转向声明性界面模......
  • Jetpack组件库(含Jetpack Compose)从入门到精通全家桶【附Demo】
    前言开发应用程序就像搭积木。我们对产品业务及功能模块的划分和封装,就像在搭建积木一样。积木不能太大,这不利于修改和拆解;积木也不能太小,否则管理起来可能会很混乱。只有基于稳健、合理的架构,项目才能轻松应对需求的变化,才有可能健康成长。没有良好架构的应用程序,就像没有搭好底......
  • Compose能拯救安卓开发吗?Jetpack Compose入门到精通(附资料)含实战、附Demo
    JetpackCompose简述JetpackCompose是用于构建原生AndroidUI的现代工具包。JetpackCompose使用更少的代码,强大的工具和直观的KotlinAPI,简化并加速了Android上的UI开发。这是AndroidDevelopers官网对它的描述。由于Compose基于Kotlin构建,因此可以与Java编程语言完全互操作,并......
  • Android-Kotlin-Activity直接的跳转
    1.选中应用包名packageName,右键:2.选中Kotlin:3.创建Kotlin的Activity完成:第一个Activity,MainActivitypackagecn.kotlinimportandroid.content.Intentimportandroid.support.v7.app.AppCompatActivityimportandroid.os.Bundleimportandroid.util.Logimportandroid.view.......
  • Jetpack从入门到精通全家桶(含项目实战 附Demo)
    前言开发应用程序就像搭积木。我们对产品业务及功能模块的划分和封装,就像在搭建积木一样。积木不能太大,这不利于修改和拆解;积木也不能太小,否则管理起来可能会很混乱。只有基于稳健、合理的架构,项目才能轻松应对需求的变化,才有可能健康成长。没有良好架构的应用程序,就像没有搭好底......
  • Android AccessibilityService 事件分发原理
    在了解了无障碍服务基础使用之后,我们来探究一下AccessibilityService的事件接收方法回调的时机和它深层次的实现逻辑。AccessibilityService监听事件的调用逻辑AccessibilityService有很多用来接收外部调用事件变化的方法,这些方法封装在内部接口Callbacks中:publicinterface......