C#用Convert.ToString(Int32, Int32)和Convert.Tolnt64(String, Int32)进行数值转换

目录

一、Convert.ToString(Int32, Int32) 方法

1.定义

2.  示例  

二、Convert.ToInt64(String, Int32)

1.定义

2.实例

三、用Convert.ToString(Int32, Int32)和Convert.Tolnt64(String, Int32)进行数值转换

1.Main()

2.类库

3.生成效果


        使用Convert.ToString(Int32, Int32)静态方法可以将十进制数值分别转换为二进制、八进制、十六进制。

        使用Convert.Tolnt64(String, Int32)静态方法可以将二进制、八进制、十六进制数值的字符串表示转换为十进制数值。

一、Convert.ToString(Int32, Int32) 方法

        将 32 位带符号整数的值转换为其指定基的等效字符串表示形式。

        如果 value 为并且 toBase 为 2、8 或 16,则返回的字符串使用符号和数量级表示形式。 如果 value 为数且 toBase 为 2、8 或 16,则返回的字符串使用二的补数表示形式。 这意味着,最高阶字节 (位 31) 的高位位被解释为符号位。         

1.定义

public static string ToString (int value, int toBase);

参数
value    Int32
要转换的 32 位带符号整数。

toBase    Int32
返回值的基数,必须是 2、8、10 或 16。

返回
String
以 value 为基数的 toBase 的字符串表示形式。

例外
ArgumentException
toBase 不是 2、8、10 或 16。

2.  示例  

// Convert.ToString(Int32, Int32)
// 将整数数组中的每个元素转换为其等效的二进制、十六进制、十六进制和十六进制字符串表示形式。
namespace ConsoleApp13
{
    internal class Program
    {
        private static void Main(string[] args)
        {
            ArgumentNullException.ThrowIfNull(args);

            int[] bases = [2, 8, 10, 16];
            int[] numbers = [ int.MinValue, -19327543, -13621, -18, 12,
                             19142, int.MaxValue ];

            foreach (int baseValue in bases)
            {
                Console.WriteLine("Base {0} conversion:", baseValue);
                foreach (int number in numbers)
                {
                    Console.WriteLine("   {0,-15}     -->  0x{1}", number, //{0,-15} 代表格式输出{0}占位15个位
                        Convert.ToString(number, baseValue));
                }
            }
        }
    }
}
// 运行结果:
/*
Base 2 conversion:
   -2147483648         -->  0x10000000000000000000000000000000
   -19327543           -->  0x11111110110110010001010111001001
   -13621              -->  0x11111111111111111100101011001011
   -18                 -->  0x11111111111111111111111111101110
   12                  -->  0x1100
   19142               -->  0x100101011000110
   2147483647          -->  0x1111111111111111111111111111111
Base 8 conversion:
   -2147483648         -->  0x20000000000
   -19327543           -->  0x37666212711
   -13621              -->  0x37777745313
   -18                 -->  0x37777777756
   12                  -->  0x14
   19142               -->  0x45306
   2147483647          -->  0x17777777777
Base 10 conversion:
   -2147483648         -->  0x-2147483648
   -19327543           -->  0x-19327543
   -13621              -->  0x-13621
   -18                 -->  0x-18
   12                  -->  0x12
   19142               -->  0x19142
   2147483647          -->  0x2147483647
Base 16 conversion:
   -2147483648         -->  0x80000000
   -19327543           -->  0xfed915c9
   -13621              -->  0xffffcacb
   -18                 -->  0xffffffee
   12                  -->  0xc
   19142               -->  0x4ac6
   2147483647          -->  0x7fffffff

 */     

二、Convert.ToInt64(String, Int32)

        将指定基数的数字的字符串表示形式转换为等效的 64 位有符号整数。

1.定义

public static long ToInt64 (string? value, int fromBase);

参数
value    String
包含要转换的数字的字符串。

fromBase    Int32
value 中数字的基数,它必须是 2、8、10 或 16。

返回
Int64
一个与 value 中数字等效的 64 位带符号整数,如果 value 为 null,则为 0(零)。

例外
ArgumentException
fromBase 不是 2、8、10 或 16。
或
value(表示基数不为 10 的符号数字)的前缀为负号。

ArgumentOutOfRangeException
value 上声明的默认值为 Empty。

FormatException
value 包含一个字符,该字符不是由 fromBase 指定的基数中的有效数字。 如果 value 中的第一个字符无效,则该异常消息指示没有要转换的数字;否则,该消息指示 value 包含无效的尾随字符。

OverflowException
value(表示基数不为 10 的符号数字)的前缀为负号。
或
value 表示小于 Int64.MinValue 或大于 Int64.MaxValue 的数字。

注解
如果 fromBase 为 16,则可以在参数指定的 value 数字前面添加“0x”或“0X”。

2.实例

// Convert.ToInt64(String, Int32)
// 将字符串数组中的每个元素解释为十六进制字符串,并将其转换为长整数。
namespace ConsoleApp14
{
    public class Example
    {
        public static void Main()
        {
            string[] hexStrings = { "8000000000000000", "0FFFFFFFFFFFFFFF",
                              "f0000000000001000", "00A30", "D", "-13", "GAD" };
            foreach (string hexString in hexStrings)
            {
                try
                {
                    long number = Convert.ToInt64(hexString, 16);
                    Console.WriteLine("Converted '{0}' to {1:N0}.", hexString, number);
                }
                catch (FormatException)
                {
                    Console.WriteLine("'{0}' is not in the correct format for a hexadecimal number.",
                                      hexString);
                }
                catch (OverflowException)
                {
                    Console.WriteLine("'{0}' is outside the range of an Int64.", hexString);
                }
                catch (ArgumentException)
                {
                    Console.WriteLine("'{0}' is invalid in base 16.", hexString);
                }
            }
        }
    }
}
// 运行结果:
/*
Converted '8000000000000000' to -9,223,372,036,854,775,808.
Converted '0FFFFFFFFFFFFFFF' to 1,152,921,504,606,846,975.
'f0000000000001000' is outside the range of an Int64.
Converted '00A30' to 2,608.
Converted 'D' to 13.
'-13' is invalid in base 16.
'GAD' is not in the correct format for a hexadecimal number.

 */       

三、用Convert.ToString(Int32, Int32)和Convert.Tolnt64(String, Int32)进行数值转换

1.Main()

// 进制转换
namespace _052
{
    public partial class Form1 : Form
    {
        private GroupBox? groupBox1;
        private Button? button1;
        private ComboBox? comboBox2;
        private ComboBox? comboBox1;
        private TextBox? textBox2;
        private TextBox? textBox1;
        private Label? label3;
        private Label? label2;
        private Label? label1;

        public Form1()
        {
            InitializeComponent();
            Load += Form1_Load;
        }
        private void Form1_Load(object? sender, EventArgs e)
        {
            // 
            // button1
            // 
            button1 = new Button
            {
                Location = new Point(194, 68),
                Name = "button1",
                Size = new Size(75, 23),
                TabIndex = 7,
                Text = "开始转换",
                UseVisualStyleBackColor = true
            };
            button1.Click += Button1_Click;
            // 
            // comboBox2
            // 

            comboBox2 = new ComboBox
            {
                FormattingEnabled = true,
                Location = new Point(76, 66),
                Name = "comboBox2",
                Size = new Size(75, 25),
                TabIndex = 6
            };
            comboBox2.Items.AddRange([
            "十进制",
            "二进制",
            "八进制",
            "十六进制"]);
            comboBox2!.SelectedIndex = 3;//初始化Cbox_select2默认选项
            // 
            // comboBox1
            //            
            comboBox1 = new ComboBox
            {
                FormattingEnabled = true,
                Location = new Point(194, 28),
                Name = "comboBox1",
                Size = new Size(75, 25),
                TabIndex = 5
            };
            comboBox1.Items.AddRange([
            "十进制",
            "二进制",
            "八进制",
            "十六进制"]);
            comboBox1!.SelectedIndex = 0;//初始化Cbox_select默认选项            
            // 
            // textBox2
            //     
            textBox2 = new TextBox
            {
                Location = new Point(76, 106),
                Name = "textBox2",
                Size = new Size(192, 23),
                TabIndex = 4
            };
            // 
            // textBox1
            //         
            textBox1 = new TextBox
            {
                Location = new Point(76, 30),
                Name = "textBox1",
                Size = new Size(117, 23),
                TabIndex = 3
            };
            // 
            // label3
            //          
            label3 = new Label
            {
                AutoSize = true,
                Location = new Point(11, 112),
                Name = "label3",
                Size = new Size(68, 17),
                TabIndex = 2,
                Text = "转换结果:"
            };
            // 
            // label2
            //           
            label2 = new Label
            {
                AutoSize = true,
                Location = new Point(11, 74),
                Name = "label2",
                Size = new Size(68, 17),
                TabIndex = 1,
                Text = "欲转换为:"
            };
            // 
            // label1
            //            
            label1 = new Label
            {
                AutoSize = true,
                Location = new Point(11, 36),
                Name = "label1",
                Size = new Size(68, 17),
                TabIndex = 0,
                Text = "输入数值:"
            };
            SuspendLayout();
            // 
            // groupBox1
            // 
            groupBox1 = new GroupBox
            {
                Location = new Point(12, 12),
                Name = "groupBox1",
                Size = new Size(275, 147),
                TabIndex = 0,
                TabStop = false,
                Text = "进制转换"
            };
            groupBox1.Controls.Add(button1);
            groupBox1.Controls.Add(comboBox2);
            groupBox1.Controls.Add(comboBox1);
            groupBox1.Controls.Add(textBox2);
            groupBox1.Controls.Add(textBox1);
            groupBox1.Controls.Add(label3);
            groupBox1.Controls.Add(label2);
            groupBox1.Controls.Add(label1);
            groupBox1.SuspendLayout();         
            // 
            // Form1
            // 
            AutoScaleDimensions = new SizeF(7F, 17F);
            AutoScaleMode = AutoScaleMode.Font;
            ClientSize = new Size(299, 171);
            Controls.Add(groupBox1);
            Name = "Form1";
            StartPosition = FormStartPosition.CenterScreen;
            Text = "进制转换器";          
            groupBox1.ResumeLayout(false);
            groupBox1.PerformLayout();
            ResumeLayout(false);
        }

        private void Button1_Click(object? sender, EventArgs e)
        {
            try
            {
                Action();//调用Action方法进行转换操作
            }
            catch (Exception ex)
            {
                MessageBox.Show(//如果出现异常则提示错误信息
                    ex.Message + " 请重新输入", "出错!");
            }
        }
        /// <summary>
        /// 此方法用于进制转换
        /// </summary>
        private void Action()
        {
            if (comboBox1!.SelectedIndex != 3)//判断用户输入是否为十六进制数
            {
                if (long.TryParse(textBox1!.Text, out long temp_value))//判断输入数值是否正确并赋值
                {
                    if (comboBox1.SelectedIndex == 0)//判断用户输入的是否为十进制数
                    {
                        switch (comboBox2!.SelectedIndex)
                        {
                            case 0:
                                textBox2!.Text = textBox1.Text;//将十进制转为十进制
                                break;
                            case 1:
                                textBox2!.Text = //将十进制转为二进制
                                    Transform.TenToBinary(long.Parse(textBox1.Text));
                                break;
                            case 2:
                               textBox2!.Text = //将十进制转为八进制
                                    Transform.TenToEight(long.Parse(textBox1.Text));
                                break;
                            case 3:
                                textBox2!.Text = //将十进制转为十六进制
                                    Transform.TenToSixteen(long.Parse(textBox1.Text));
                                break;
                        }
                    }
                    else
                    {
                        if (comboBox1.SelectedIndex == 1)//判断用户输入的是否为二进制数
                        {
                            switch (comboBox2!.SelectedIndex)
                            {
                                case 0:
                                    textBox2!.Text = //将二进制转为十进制
                                        Transform.BinaryToTen(long.Parse(textBox1.Text));
                                    break;
                                case 1:
                                    textBox2!.Text = textBox1.Text;//将二进制转为二进制
                                    break;
                                case 2:
                                    textBox2!.Text = //将二进制转为八进制
                                        Transform.BinaryToEight(long.Parse(textBox1.Text));
                                    break;
                                case 3:
                                    textBox2!.Text = //将二进制转为十六进制
                                        Transform.BinaryToSixteen(long.Parse(textBox1.Text));
                                    break;
                            }
                        }
                        else
                        {
                            if (comboBox1.SelectedIndex == 2)//判断用户输入的是否为八进制数
                            {
                                switch (comboBox2!.SelectedIndex)
                                {
                                    case 0:
                                        textBox2!.Text = //将八进制转为十进制
                                            Transform.EightToTen(long.Parse(textBox1.Text));
                                        break;
                                    case 1:
                                        textBox2!.Text = //将八进制转为二进制
                                            Transform.EightToBinary(long.Parse(textBox1.Text));
                                        break;
                                    case 2:
                                        textBox2!.Text = textBox1.Text;//将八进制转为八进制
                                        break;
                                    case 3:
                                        textBox2!.Text = //将八进制转为十六进制
                                            Transform.EightToSixteen(long.Parse(textBox1.Text));
                                        break;
                                }
                            }
                        }
                    }
                }
                else
                {
                    MessageBox.Show("请输入正确数值!", "提示!");//提示错误信息
                }
            }
            else
            {
                switch (comboBox2!.SelectedIndex)
                {
                    case 0:
                        textBox2!.Text = //将十六进制转为十进制
                            Transform.SixteenToTen(textBox1!.Text);
                        break;
                    case 1:
                        textBox2!.Text = //将十六进制转为二进制
                            Transform.SixteenToBinary(textBox1!.Text);
                        break;
                    case 2:
                        textBox2!.Text = //将十六进制转为八进制
                            Transform.SixteenToEight(textBox1!.Text);
                        break;
                    case 3:
                        textBox2!.Text = //将十六进制转为十六进制
                            textBox1!.Text;
                        break;
                }
            }
        }
    }
}

2.类库

//类库
namespace _052
{
    internal class Transform
    {
        internal static string TenToBinary(long value)//将十进制转换为二进制
        {
            return Convert.ToString(value, 2);
        }
        internal static string TenToEight(long value)//将十进制转换为八进制
        {
            return Convert.ToString(value, 8);
        }
        internal static string TenToSixteen(long value)//将十进制转换为十六进制
        {
            return Convert.ToString(value, 16);
        }
        internal static string BinaryToEight(long value)//将二进制转换为八进制
        {
            return Convert.ToString(
                Convert.ToInt64(value.ToString(), 2), 8);
        }
        internal static string BinaryToTen(long value)//将二进制转换为十进制
        {
            return Convert.ToInt64(
                value.ToString(), 2).ToString();
        }
        internal static string BinaryToSixteen(long value)//将二进制转换为十六进制
        {
            return Convert.ToString(
                Convert.ToInt64(value.ToString(), 2), 16);
        }
        internal static string EightToBinary(long value)//将八进制转换为二进制
        {
            return Convert.ToString(
                Convert.ToInt64(value.ToString(), 8), 2);
        }
        internal static string EightToTen(long value)//将八进制转换为十进制
        {
            return Convert.ToInt64(
                value.ToString(), 8).ToString();
        }
        internal static string EightToSixteen(long value)//将八进制转换为十六进制
        {
            return Convert.ToString(
                Convert.ToInt64(value.ToString(), 8), 16);
        }
        internal static string SixteenToBinary(string value)//将十六进制转换为二进制
        {
            return Convert.ToString(
                Convert.ToInt64(value, 16), 2);
        }
        internal static string SixteenToEight(string value)//将十六进制转换为八进制
        {
            return Convert.ToString(
                Convert.ToInt64(value, 16), 8);
        }
        internal static string SixteenToTen(string value)//将十六进制转换为十进制
        {
            return Convert.ToUInt64(value, 16).ToString();
        }
    }
}

3.生成效果

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/332274.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

QuestDB时序数据库快速入门

简介 QuestDB是一个开源的高性能时序数据库&#xff0c;专门用于处理时间序列相关的数据存储与查询&#xff1b; QuestDB使用列式存储模型。数据存储在表中&#xff0c;每列存储在其自己的文件和其自己的本机格式中。新数据被附加到每列的底部&#xff0c;以便能够按照与摄取…

storm统计服务开启zookeeper、kafka 、Storm(sasl认证)

部署storm统计服务开启zookeeper、kafka 、Storm&#xff08;sasl认证&#xff09; 当前测试验证结果&#xff1a; 单独配置zookeeper 支持acl 设置用户和密码&#xff0c;在storm不修改代码情况下和kafka支持当kafka 开启ACL时&#xff0c;storm 和ccod模块不清楚配置用户和密…

【分享】MathWorks中国汽车年会:“软件定义汽车”

从软件赋能到软件定义&#xff0c;汽车行业不仅需要解决诸如错误发现滞后带来的高昂代价、功能融合所需的跨学科知识、功能安全与实施成本之间的权衡等老问题&#xff0c;也面临着新的挑战&#xff1a;软件复杂度的不断提升、利用数据驱动创造价值、人工智能的引入和实现、数字…

PyCharm 快捷键(Ctrl + R)正则表达式批量替换

目录 一、使用快捷键CtrlR&#xff0c;打开替换界面 二、输入替换格式 三、点击全部替换 一、使用快捷键CtrlR&#xff0c;打开替换界面 二、输入替换格式 在第一个框输入 (.*): (.*) 第二个框输入 $1:$2, 三、点击全部替换

【JVM】并发的可达性分析详细解释

​ &#x1f34e;个人博客&#xff1a;个人主页 &#x1f3c6;个人专栏&#xff1a;JVM ⛳️ 功不唐捐&#xff0c;玉汝于成 ​ 目录 前言 正文 可达性分析的基本原理&#xff1a; 根集合&#xff08;Root Set&#xff09;&#xff1a; 对象引用关系&#xff1a; 标记…

Java导出Excel并合并单元格

需求&#xff1a;需要在导出excel时合并指定的单元格 ruoyi excel 项目基于若伊框架二次开发&#xff0c;本着能用现成的就不自己写的原则&#xff0c;先是尝试了Excel注解中needMerge属性 /*** 是否需要纵向合并单元格,应对需求:含有list集合单元格)*/public boolean needMer…

记一次 .NET某道闸收费系统 内存溢出分析

一&#xff1a;背景 1. 讲故事 前些天有位朋友找到我&#xff0c;说他的程序几天内存就要爆一次&#xff0c;不知道咋回事&#xff0c;找不出原因&#xff0c;让我帮忙看一下&#xff0c;这种问题分析dump是最简单粗暴了&#xff0c;拿到dump后接下来就是一顿分析。 二&…

11.1 pcl_ros的点云学习

本文是看了两个博主的内容&#xff0c;整理在这里是为了以后用时方便查找&#xff0c;更容易理解。引用的博文路径如下&#xff08;本人也是刚开始看PCL的运用&#xff0c;本文是完全抄下面博主的内容&#xff0c;觉得这位博主写的很详细很清楚&#xff0c;并且自己运行了一遍有…

Java17新特性详解含示例代码(值得珍藏)

1. 概述 Java 17 是 Java 开发工具包&#xff08;JDK&#xff09;的一个重要版本&#xff0c;它带来了一系列的新特性和改进&#xff0c;以进一步增强 Java 语言的功能和性能。以下是 Java 17 中的一些主要新特性及其详细说明。 2. 新特性详解 JEP 356: Enhanced Pseudo-Ran…

uniapp uni.chooseLocation调用走失败那里,错误码:112

问题&#xff1a;我配置了百度上所有能配置的&#xff0c;一直调用不成功&#xff0c;如下图配置的 1:第一个 配置 代码&#xff1a; "permission": {"scope.userLocation": {"desc": "你的位置信息将用于小程序位置接口的效果展示"}…

openpose之使用摄像头检测并输出到json文件

编程如画&#xff0c;我是panda&#xff01; 前言 之前给大家分享了如何搭建openpose环境&#xff0c;并进行了测试案例&#xff0c;但是如果要使用摄像头的话&#xff0c;还需要修改一下运行文件&#xff0c;并且这次会教大家如何输出到json文件 。 如果环境还没有搭建好&am…

Unix时间戳

时间戳&#xff0c;相信很多相关专业的人&#xff0c;计算机软件电子等等都会听过。由于最早是由Unix系统使用所以又叫Unix时间戳。 Unix 时间戳&#xff08;Unix Timestamp&#xff09;定义为从UTC&#xff08;世界协调时&#xff09;/GMT&#xff08;格林尼治时&#xff09;…

iPhone解锁工具---AnyMP4 iPhone Unlocker 中文

AnyMP4 iPhone Unlocker是一款功能强大的iPhone解锁软件&#xff0c;旨在帮助用户轻松解锁iPhone&#xff0c;从而在电脑上进行数据备份、传输和编辑。该软件支持多种iPhone型号&#xff0c;包括最新的iPhone 14系列&#xff0c;并支持多种解锁模式&#xff0c;如屏幕密码解锁、…

【Docker】安装 Nacos容器并根据Nginx实现负载均衡

&#x1f389;&#x1f389;欢迎来到我的CSDN主页&#xff01;&#x1f389;&#x1f389; &#x1f3c5;我是Java方文山&#xff0c;一个在CSDN分享笔记的博主。&#x1f4da;&#x1f4da; &#x1f31f;推荐给大家我的专栏《Docker实战》。&#x1f3af;&#x1f3af; &…

Go后端开发 -- 反射reflect 结构体标签

Go后端开发 – 反射reflect && 结构体标签 文章目录 Go后端开发 -- 反射reflect && 结构体标签一、反射reflect1.编程语言中反射的概念2.interface 和反射3.变量内置的pair结构4.reflect的基本功能TypeOf和ValueOf5.从relfect.Value中获取接口interface的信息6…

2018年认证杯SPSSPRO杯数学建模D题(第二阶段)投篮的最佳出手点全过程文档及程序

2018年认证杯SPSSPRO杯数学建模 D题 投篮的最佳出手点 原题再现&#xff1a; 影响投篮命中率的因素不仅仅有出手角度、球感、出手速度&#xff0c;还有出手点的选择。规范的投篮动作包含两膝微屈、重心落在两脚掌上、下肢蹬地发力、身体随之向前上方伸展、同时抬肘向投篮方向…

SpringBoot:前端提交数据,服务端无法获取数据

http://www.xxx.com?phone111111111111&code1332 上述访问传值方式为键值对方式&#xff0c;服务端springmvc获取 >> // 在HttpServlet实现类的doGet、doPost方法中获取前端传来的值 doGet(ServerHttpRequest request){String phone request.getParameter("…

Codeforces Round 767 (Div. 1) D2. Game on Sum (Hard Version)(博弈 期望 dp 贡献)

题目 t(t<1e5)组样例&#xff0c;每次给定n,m,k(m<n<1e6&#xff0c;0<k<1e97) 有一个游戏&#xff0c;持续n轮&#xff0c;每轮Alice先选一个[0,k]的实数&#xff0c; Bob决定从总分里加上这个值还是减去这个值 特别地&#xff0c;n轮里&#xff0c;Bob选择…

Unity Mirror VR联机开发 实战篇(二)

一、迁移示例中的联机物体 1、将MirrorExamplesVR工程中的部分文件夹复制到自己的工程中。 1、打开MirrorExamplesVR中的 SceneVR-Common场景。 2、将场景中没用的东西都删掉&#xff0c;只留下面这些&#xff0c;新建一个空物体XR Mirror&#xff0c;将所有剩下的物体拖成XR …

Elastic 8.12:AI Assistant for Observability 正式发布,更新至 Apache Lucene 9.9

作者&#xff1a;来自 Elastic Brian Bergholm 今天&#xff0c;我们很高兴地宣布 Elastic 8.12 全面上市。 有哪些新的功能&#xff1f; 8.12 版本的两个最重要的组成部分包括 Elastic AI Assistant for Observability 的 正式发布版 和 Apache Lucene 9.9 的更新&#xff08…