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                 -->  0x1111111111111111111111111110111012                  -->  0x110019142               -->  0x1001010110001102147483647          -->  0x1111111111111111111111111111111
Base 8 conversion:-2147483648         -->  0x20000000000-19327543           -->  0x37666212711-13621              -->  0x37777745313-18                 -->  0x3777777775612                  -->  0x1419142               -->  0x453062147483647          -->  0x17777777777
Base 10 conversion:-2147483648         -->  0x-2147483648-19327543           -->  0x-19327543-13621              -->  0x-13621-18                 -->  0x-1812                  -->  0x1219142               -->  0x191422147483647          -->  0x2147483647
Base 16 conversion:-2147483648         -->  0x80000000-19327543           -->  0xfed915c9-13621              -->  0xffffcacb-18                 -->  0xffffffee12                  -->  0xc19142               -->  0x4ac62147483647          -->  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.hqwc.cn/news/414327.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python数字图像处理基础(八)——harris角点检测、图像尺度空间、SIFT算法

目录 harris角点检测原理函数 图像尺度空间概念局部不变性局部不变特征SIFT算法 harris角点检测 原理 Harris 角点检测是一种用于在图像中检测角点的算法。角点是图像中局部区域的交叉点或者突出的特征点。Harris 角点检测算法旨在寻找图像中对于平移、旋转和尺度变化具有不变…

媒体AI解决方案

贴合媒体业务流程 提供智能生产、多模态内容结构化、智能编解码、审核等丰富智能应用&#xff0c;贴合行业“采编存管播发”场景。 依托强大 AI 技术 联合腾讯优图、多媒体实验室、天御、微信等领先团队&#xff0c;融合互联网媒体 AI 应用经验&#xff0c;提供有效技术支撑。…

杰理AC791N编译以及生成升级固件

一、打开工程编译 首先是找到工程文件&#xff0c;如果是使用的codeblock编译器编译&#xff0c;则找到cbp文件打开工程进行编译(例如fw-AC79_AIoT_SDK\apps\wifi_camera\board\wl82\AC791N_WIFI_CAMERA.cbp),点击build选项下拉项中选择build进行编译。 二、使用脚本生成升级固…

Java如何做到无感知刷新token含示例代码(值得珍藏)

1. 前言 在系统页面进行业务操作时&#xff0c;有时会突然遇到应用闪退&#xff0c;并被重定向至登录页面&#xff0c;要求重新登录。此问题的出现&#xff0c;通常与系统中用于存储用户ID和token信息的Redis缓存有关。具体来说&#xff0c;这可能是由于token过期所导致的身份…

一种基于YOLO改进的高效且轻量级的表面缺陷检测网络, NEU-DET和GC10-DET涨点明显

&#x1f4a1;&#x1f4a1;&#x1f4a1;本文摘要&#xff1a;一种基于YOLO改进的高效且轻量级的表面缺陷检测&#xff0c; 在NEU-DET和GC10-DET任务中涨点明显 目录 1.轻量且高效的YOLO 1.1 SCRB介绍 1.1.1 ScConv介绍 1.2 GSConvns 1.3 od_mobilenetv2_050 1.4 对应ya…

【mars3d】 graphic.bindPopup(inthtml).openPopup()无需单击小车,即可在地图上自动激活弹窗的效果。

实现效果&#xff1a;new mars3d.graphic.FixedRoute({无需单击小车&#xff0c;即可在地图上实现默认打开弹窗的激活效果。↓↓↓↓↓↓↓↓ 相关链接说明&#xff1a; 1.popup的示例完全开源&#xff0c;可参考&#xff1a;功能示例(Vue版) | Mars3D三维可视化平台 | 火星科…

WEB 3D技术 three.js 3D贺卡(3) 点光源灯光动画效果

经过 上文 WEB 3D技术 three.js 3D贺卡(2) 加入天空与水面效果 我们将水面 和 天空的效果搭建了一下 那么 我们将四周 点光源的效果做一下 首先 我们将 renderer.toneMappingExposure 的值 改为 0.1 让效果看着明显一点 这样 整个界面就会暗下来 然后 我们在任意位置 加入代…

看完买,开放式耳机质量榜单:南卡夺冠、韶音第5、Cleer排第7

​作为一名拥有丰富经验的开放式耳机用户&#xff0c;我想在此提醒大家&#xff0c;选择耳机时&#xff0c;千万不要盲目跟风或过于信赖所谓的“网红”或“大牌产品”。毕竟&#xff0c;每个人的需求和使用环境都是独一无二的&#xff0c;因此&#xff0c;适合自己的耳机才是最…

文件夹里的文件消失了?3个方法轻松找回文件!

“我在电脑上建了个文件夹&#xff0c;用来保存比较重要的文件和数据&#xff0c;但是不知道为什么&#xff0c;我文件夹里的文件莫名其妙就消失了&#xff0c;有什么方法可以找回消失的文件吗&#xff1f;” 为了更好的给文件进行分类&#xff0c;很多用户会选择将文件放置到不…

【C++】C++的IO流

一、C语言的输入与输出 C 语言中我们用到的最频繁的输入输出方式就是 scanf () 与 printf()。 scanf()&#xff1a;从标准输入设备&#xff08;键盘&#xff09;读取数据&#xff0c;并将值存放在变量中。printf()&#xff1a;将指定的文字/字符串输出到标准输出设备&#xff…

JDK17安装后没有jre解决方案

JDK17安装后没有jre解决方案 新安装的JDK17没有jre &#xff0c; 有些场景需要jre才能运行&#xff0c;如idea2023.3版 通过如下&#xff0c;进入jdk安装路径&#xff0c;执行以下命令 bin\jlink.exe --module-path jmods --add-modules java.desktop --output jre运行命令…

SD-WAN解决跨国公司海外工厂网络安全问题

在跨境业务蓬勃发展的今天&#xff0c;越来越多的大型企业出于人力成本的考虑&#xff0c;在人力成本较低的发展中国家建立工厂。然而&#xff0c;传统基于路由器的网络架构已无法为这些跨国企业提供可靠的安全网络。那么&#xff0c;如何解决跨国企业海外工厂的网络难题呢&…