美文网首页dotNETcsharp
C# Learning:进制转换

C# Learning:进制转换

作者: 月银秋 | 来源:发表于2020-02-14 22:57 被阅读0次

有时候我们会碰到有关“进制转换”的需要,但是很多人都不清楚具体是怎么回事,这篇文章就帮助大家了解相关的内容。

首先我们要明确很重要的一点,计算机只能储存和计算二进制数
这时候一定有人会问,把文件用“十六进制编辑器”打开明明看到的是16进制数啊?但是查一下百度就知道“十六进制编辑器,用来以16进制视图进行文本编辑的编辑工具软件。”有“16进制视图”,就有“2进制视图”,16进制人看起来舒服,因此十六进制编辑器是比较常见的,而少见“二进制编辑器”。我们看到的16进制或者是2进制,其实都不是计算机内部的存储方式,而是经过转换而产生的一种视觉效果。
同样的,我们可以使用比如:

int number = 76;

虽然这里用的是十进制76,包括调试、输出等等情况下出现的都是76,但不代表计算机存储的是十进制数。

那么既然计算机只能存储和计算二进制数,那还怎么转换呢?我们先看一道题(不用做,看一下题目的意思就行):


题目
这是一道C语言的题目,但是没有关系,基本上还是可以看懂的。有题自然要有解: 解答
然后我们就发现一个很大的毛病:
如果我们调用
int bin = fun(12);

最后得到bin的值是1100,没什么问题对吧,那如果我们再加一句:

int bin2 = bin + 1 + 1;

结果很明显,1102。是不是感觉很奇怪?没错,因为转换结果1100明明是十进制1100啊!怎么能说是12的二进制形式呢?
我们可以发现,这个转换结果只能拿出来输出,而不能继续参与运算,因此,使用 int 类型是不合理的,我们应当把它作为 string 来处理。(当然如果你们学校出了这种题目,那只能照做,不然 你 分 没 了 !)

那怎么才是正确的转换方式呢?
如果你还希望参于计算的,那就压根不用转,因为计算机只能处理二进制数,根本没法给你转。
如果你希望以特定格式做输出的,可以参考以下的示例:

int number = 12;
string text = Convert.ToString(number, 2);
// text :"1100"
int number = 12;
string text = number.ToString("x");
// text :"c"
string text = "1100";
int number = Convert.ToInt32(text, 2);
// number :12
string text = "c";
int number = int.Parse(text, System.Globalization.NumberStyles.HexNumber);
// number :12

相关文章

  • C# Learning:进制转换

    有时候我们会碰到有关“进制转换”的需要,但是很多人都不清楚具体是怎么回事,这篇文章就帮助大家了解相关的内容。 首先...

  • C# 获取时间戳并从10进制时间戳转换成16进制byte数组

    C#获取当前时间戳 获取当前的毫秒时间戳 时间戳转换16进制byte数组 首先将时间戳转换16进制字符串 16进制...

  • C# Stream 和 byte[] 之间的转换

    C# Stream 和 byte[] 之间的转换 一. 二进制转换成图片MemoryStream ms = new...

  • c#进制转换

    “AA BB CC”这种,在前面添加0x后可使用下面这种方法转换为数组 var command = str.Spl...

  • C#初级(进制转换)

    1.进制(二进制,十进制,十六进制) 1.1十进制由0.1.2.3.4.5.6.7.8.9十个数组成,即基数10,...

  • c#任意进制转换

    开发人员通常需要将十进制数转换为二进制、八进制、十六进制或其他进制。由于这是一个常见的任务,在互联网上有很多例子是...

  • C#——进制之间的转换

    今天晚上在写一个程序,主要的内容是将字符进行等长、哈夫曼以及变长编码。 要编码,肯定就会产生一个问题——给定了数组...

  • 【iOS 开发】二进制、十进制、十六进制相互转换的方法

    十进制转换为二进制 十进制转换为十六进制 二进制转换为十六进制 十六进制转换为二进制 二进制转换为十进制 作者:J...

  • python 的进制转换

    十进制, 二进制相互转换 十进制转换为二进制 二进制转换为十进制 十进制, 八进制相互转换 十进制转换为八进制 八...

  • Flutter 进制转换

    10进制转换位16进制 16进制转换位10进制

网友评论

    本文标题:C# Learning:进制转换

    本文链接:https://www.haomeiwen.com/subject/srrsfhtx.html