【C#小笔记】C#开发工业程序常用的数制-HEX,OCT,DEC转换方法探讨

由于台达提供通讯协议是PDF版的里面的地址无法复制,

用C#写一个小工具,用来计算台达PLC地址

涉及到一些数制转换的问题,做了以下的记录,个人觉得可以延用到其他程序中,

把方法共享出来供大家探讨

下面是我的小工具的界面:

台达PLC的通讯地址

X,Y寄存器是8进制地址

T,M,D等寄存器为16进制地址

涉及的地址的进制类型如下

HEX:十六进制

OCT:八进制

DEC:十进制

下面是我自己写的小笔记:

*C#中的数据都是用十进制进行显示和运算的,

 其他进制的字符都要通过转换的方式才能进行显示和运算

在C#中各进制字符的表示方法:

常量表示:eg.十进制下的16

①八进制:020 这个需要商榷,我查到的资料C#的八进制是0作为前缀的,但实际的计算结果出现问题还是以十进制进行计算的
十进制:16
十六进制:0x10
二进制:0b10000

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace 进制转换测试
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
			//C#中的数制默认是十进制的
			//即:
			//①从外部传进来的字符默认转换为10进制运算,
			//②在代码里默认也是按十进制显示
			//③如果涉及到其他进制则需要进制转换后运算或者显示
            
			//计算:将传入的字符默认转换为十进制的数值,C#底层还是以十进制进行算数运算
			//计算:如果传入的字符是其他进制(如十六进制),要把该字符转换为十进制的整数再运算string->int
			//显示:C#计算后是十进制整型的结果,如果要显示为其他进制的,用Convert方法进行转换int->string

            //以下是示例:
			
			//一.字符转int
			//string→int
			//把以下各进制的字符转换为int型(结果是十进制的)
           
            int oct = Convert.ToInt32("20", 8);   //结果:[oct=16(十进制)]即:八进制字符"20"→十进制16

            int hex = Convert.ToInt32("10", 16);  //结果:[hex=16(十进制)]即:十六进制字符"10"→十进制16

            int dec = Convert.ToInt32("16");      //结果:[dec=16(十进制)]即:十进制字符"16"→十进制16,二者一致

            int bin = Convert.ToInt32("10000", 2);//结果:[dec=16(十进制)]即:二进制的"10000"→十进制16    
			
			textBox1.AppendText("字符转各进制整数");
            textBox1.AppendText(oct + "\r\n");
            textBox1.AppendText(hex + "\r\n");
            textBox1.AppendText(dec + "\r\n");
            textBox1.AppendText(bin + "\r\n");


            //二.int转字符型
			//int→string
			//int型的数值转换为其他进制的字符用于显示
            string octStr = Convert.ToString(10, 8);  //十进制的10→转换为八进制的字符显示,结果是:"12"
            string hexStr = Convert.ToString(10, 16); //十进制的10→转换为十六进制字符显示:结果是:"A"
            string binStr = Convert.ToString(10, 2);  //十进制的10→转换为二进制的字符显示:结果是:"1010"  



            
			//三.运算示例:
			textBox1.AppendText("各进制整形常量的计算,显示结果是十进制字符");
            //常量运算
            //C#中的常量默认是十进制,如果是十六进制加0X 前缀表示 ,二进制:前面加 0b  前缀
            textBox1.AppendText((0X10 + 0X1) + "\r\n");//十六进制加法运算,结果17(十进制)

            textBox1.AppendText((010 + 010) + "\r\n");
            //**??八进制数值常量运算,按我查到的规则八进制的常量应该是以0前缀,但是计算结果不对,按十进制算
            //*??尚待商榷!!!

            textBox1.AppendText((10 + 1) + "\r\n");//十进制加法运算(系统默认),结果11(十进制)


            textBox1.AppendText((0b111 + 0b111) + "\r\n");//二进制加法运算,结果14(十进制)


        }
    }
}

 

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值