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

news2024/11/23 11:33:02

目录

一、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.生成效果

 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

GPT应用程序上线注意的问题

在将GPT应用程序上线之前&#xff0c;有一些重要的问题需要注意&#xff0c;以确保应用程序的成功运行、用户满意度和合规性。以下是一些建议&#xff0c;希望对大家有所帮助。北京木奇移动技术有限公司&#xff0c;专业的软件外包开发公司&#xff0c;欢迎交流合作。 合规性和…

docker里Java服务执行ping命令模拟流式输出

文章目录 业务场景处理解决实现ping功能并实时返回输出实现长ping和中断请求docker容器找不到ping命令处理 业务场景 我们某市的客户&#xff0c;一直使用CS版本的信控平台&#xff0c;直接安装客户Windows server服务器上&#xff0c;主要对信号机设备进行在线管理、方案配时…

Windows下安装alipay-sdk-python时,pycrypto安装报错问题处理

1、安装alipay-sdk-python 时&#xff0c;保存内容如下。 Building wheels for collected packages: pycryptoBuilding wheel for pycrypto (setup.py) ... error error: subprocess-exited-with-error python setup.py bdist_wheel did not run successfully.│ exit c…

fastJson和jackson的日期数据处理

目录 1.jackson 2.fastjson 3.总结 1.jackson jackson是spring mvc默认的JSON解析方法&#xff0c;前端的数据序列化处理之后&#xff0c;后端经过反序列化处理可以直接使用实体对象进行接收。后端接口返回实体对象&#xff0c;经过序列化处理后前端可以接收并进行处理。 …

深度学习:探索人工智能的前沿

1. 引言 1.1 人工智能的演进 人工智能&#xff08;Artificial Intelligence&#xff0c;简称AI&#xff09;是一门研究如何使计算机能够执行通常需要人类智能的任务的领域。从早期的符号推理到现代的深度学习&#xff0c;人工智能经历了漫长的发展过程。 20世纪50年代&#xff…

Golang通过Gorm操作Mysql时遇到的datetime时区问题

情景描述 golang使用Gorm操作MySQL&#xff0c;MySQL中数据类型是datetime&#xff0c;Golang中用的是time.now。 但是会导致存储的时间与北京时间有8h误差&#xff0c; 显然是没有初始化时区导致。 问题修复 初始化设置时区 参考我自己之前写过的一篇总结——Mysql中多种日…

Qt应用开发(安卓篇)——Hello Qt On Android

一、前言 这一篇从实际出发&#xff0c;讲述如何创建、编译和部署Qt On Android项目。 二、ADB调试 ADB的全称为Android Debug Bridge&#xff0c;就是起到调试桥的作用&#xff0c;主要用于连接计算机与Android 设备&#xff0c;以便进行调试和数据传输。ADB 可以实现以下主要…

工作中使用Redis10种场景

前言 Redis作为一种优秀的基于key/value的缓存&#xff0c;有非常不错的性能和稳定性&#xff0c;无论是在工作中&#xff0c;还是面试中&#xff0c;都经常会出现。 今天这篇文章就跟大家一起聊聊&#xff0c;我在实际工作中使用Redis的10种场景&#xff0c;希望对你会有所帮…

快速傅里叶变化检测轻微划痕

像这种轻微划痕,普通算法鲁棒性差,通用性也不是很好,通过一些特殊处理,基本上可以满足客户需求. 图像处理,检测无非这个几个步骤. 预处理----分割----筛选—满足设定条件NG read_image (Image, ‘轻微划痕.bmp’) dev_close_window() get_image_size(Image, Width, Height) dev…

HTTPS:如何确保您的网站数据传输安全?

目录 博客前言 一.HTTPS 1.1 HTTPS简介 1.2 HTTP和HTTPS区别 1.3 TLS/SSL协议工作原理 1.3.1 TLS/SSL协议结构 1.3.2 SSL/TLS握手协议建立连接过程 1.2.3 SSL/TLS报文分析 博客前言 以下是一个关于HTTPS协议的博客前言示例&#xff1a; 欢迎来到我的博客&#xff0c;今…

vue 解决el-table 表体数据发生变化时,未重新渲染问题

效果图父组件中数量改变后总数重新计算 子组件完整代码 <template><el-tableshow-summaryref"multipleTable"v-bind"$props"selection-change"handleSelectionChange"row-click"handleRowClick":summary-method"getSum…

20230118-【UNITY 学习】增加攀登系统

替换脚本PlayerMovement_04.cs using System.Collections; using System.Collections.Generic; using UnityEngine;public class PlayerMovement_05 : MonoBehaviour {private float moveSpeed; // 玩家移动速度public float walkSpeed 7; // 行走速度public float sprintSpee…

基于麻雀优化算法SSA的CEEMDAN-BiLSTM-Attention的预测模型

往期精彩内容&#xff1a; 时序预测&#xff1a;LSTM、ARIMA、Holt-Winters、SARIMA模型的分析与比较-CSDN博客 风速预测&#xff08;一&#xff09;数据集介绍和预处理-CSDN博客 风速预测&#xff08;二&#xff09;基于Pytorch的EMD-LSTM模型-CSDN博客 风速预测&#xff…

网络安全 | 苹果承认 GPU 安全漏洞存在,iPhone 12、M2 MacBook Air 等受影响

1 月 17 日消息&#xff0c;苹果公司确认了近期出现的有关 Apple GPU 存在安全漏洞的报告&#xff0c;并承认 iPhone 12 和 M2 MacBook Air 受影响。 该漏洞可能使攻击者窃取由芯片处理的数据&#xff0c;包括与 ChatGPT 的对话内容等隐私信息。 安全研究人员发现&#xff0c;…

论文阅读:Vary论文阅读笔记

目录 引言整体结构图数据集构造Vary-tiny部分Document Data数据构造Chart Data构造Negative natural image选取 Vary-base部分 引言 论文&#xff1a;Vary: Scaling up the Vision Vocabulary for Large Vision-Language Models Paper | Github | Demo 许久不精读论文了&#x…

基于Harris角点的多视角图像全景拼接算法matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1 Harris角点检测 4.2 图像配准 4.3 图像变换和拼接 4.4 全景图像优化 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 matlab2022a 3.部分核心程序 function [ImageB…

鸿蒙开发-ArkUI框架实战【日历应用 】

对于刚刚接触OpenHarmony应用开发的开发者&#xff0c;最快的入门方式就是开发一个简单的应用&#xff0c;下面记录了一个日历应用的开发过程&#xff0c;通过日历应用的开发&#xff0c;来熟悉基本图形的绘制&#xff0c;ArkUI的组件的使用&#xff0c;UI组件生命周期&#xf…

新版AndroidStudio dependencyResolutionManagement出错

在新版AndroidStudio中想像使用4.2版本或者4.3版本的AndroidStudio来构造项目&#xff1f;那下面这些坑我们就需要来避免了&#xff0c;否则会出各种各样的问题。 一.我们先来看看新旧两个版本的不同。 1.jdk版本的不同 新版默认是jdk17 旧版默认是jdk8 所以在新版AndroidSt…

什么是SFP光学模块?

SFP光模块是一个十亿位电信号到光信号接口设备&#xff0c;是行业标准的小型可插拔千兆光收发器模块&#xff0c;集成可插拔交换机&#xff0c;路由器和其他网络设备&#xff0c;媒体转换器SFP端口&#xff0c;用于连接到光或铜线数据传输网络&#xff0c;我们通常可以在以太网…

Numpy的学习 第一课 了解以及使用

1.输入模式 1.编辑模式 绿色2.命令模式 蓝色 2.运行 直接输入jupyter notebook 3.文档注释 查看函数帮助文档命令 help(函数) 单问号与多问号 单问号显示文档 多问号显示文档代码 3.shifttab 显示参数 4.运行外部文件 %run 路径,可绝对可相对 这里运行了就相当于方法了,或者…