zoukankan      html  css  js  c++  java
  • 字符转换(2,8,10,16进制,ASCII码)

    罗列了一些用到的,各进制 以及 ASCII 间的转换,记录备忘

    一,先说说 2,8,10 ,16 各进制之间的转化

    System.Convert类中提供了较为全面的各种类型、数值之间的转换功能:

    几个比较常用的方法

      1,Convert.ToInt32(string value, int fromBase)  :将字符串转换为数字(如2进制0010>也就是2^1=2)

      fromBase: 顾名思义参数的进制(2,,8,10,16)

      

      2,Convert.Tostring(int value, int toBase):数字转化为字符串

      toBase:目标进制

      

    1.1 2进制(string)>>>10进制(int)

      string strBase2="0101";

      int  intBase10=Convert.ToInt32(strBase2,2);

      结果:5

    1.2  8进制(string)>>>10进制(int)

      string strBase8="0101";

      int  intBase10=Convert.ToInt32(strBase8,8);

      结果:65   

    1.3  16进制(string)>>>10进制(int)

      string strBase16="0101";

      int  intBase10=Convert.ToInt32(strBase16,16);

      结果:257   

    1.4  10进制(int)>>>2进制(string)

      int  intBase10=9; (大家心算也知道结果为1001)

      string strBase2=Convert.ToString(intBase10,2);

       结果: 1001

    1.5  10进制(int)>>>8进制(string)

      //int  intBase10=9; (大家结果为11,但是体现不出8进制,换成15结果为>>8^1+7)

      int  intBase10=15;

      string strBase8=Convert.ToString(intBase10,8);

      结果: 17

    1.6  10进制(int)>>>16进制(string)

      //int  intBase10=9; (大家结果为9,但是体现不出1进制,好歹弄出个ABCD啥的,换成27>>16^1+11(也就是b))

      int  intBase10=27;

      string strBase16=Convert.ToString(intBase10,16);

      结果: 1b

    1.7  其他类型的转换(如2>8,8>16,16>2)

      我的思想是先用Convert.ToInt32将string转换为中间量int ,再用Convert.ToString将int转化为目标进制的string

      例:将一个16进制转化为2进制

      string Base16="ab"; (我们知道结果位数一定是4的倍数)

      int  temp=Convert.ToInt32(Base16,16);

      string strBase2=Convert.ToString(temp,2);

      结果: 10101011

      例:将一个16进制转化为8进制

      string Base16="ab"; (我们知道结果位数一定是3的倍数)

      int  temp=Convert.ToInt32(Base16,16);

      string strBase8=Convert.ToString(temp,8);

      结果: 253

    PS: 我们知道实际运用中,定义一个16进制,并非一定是string的

      有这种写法:int base16 = 0xab; (前面加0x)

      这时候参照上例:

      我们就可以写成 int temp=Convert.ToInt32(Base16);(到是简单了不是)

      结果还是:253

    二: ASCII 转化

    2.1 ASCII字符串转10进制数
      string tr = "水";
      int ii = (int)Convert.ToChar(tr));

    2.2 ASCII字符串转16进制数

      string s2 = "静水"; (汉字双字节,也就是4个)
          byte[] ba = (System.Text.)ASCIIEncoding.Default.GetBytes(s2);   (默认的是ANSI)

          foreach (var s in ba)
          {
              Console.WriteLine(s);
          }

       结果:190

          178

          203 

          174

    2.3 10进制转换成ASCII字符串

      int t=97;(对应的是“a”)

      string s = ((char)t).ToString();

      结果:a

      int t=12345678;

      string s = ((char)t).ToString();

      结果多少?我去,这谁知道...

      结果 :慎。。。。。

    PS:

      这时候大家有一个疑问:

      参照2.2: 我们得到结果: 190 178 203 174 ,怎么讲这些int类型的转换为“静水”

      我们通过System.Text.Encoding.Default.GetBytes() 得到一个byte数组,也可以通过GetString将这个数组转换为对应的字符

      (当然注意:)

      string sss = System.Text.Encoding.Default.GetString(new byte[] {190,178});

      sss的结果为“静”

      System.Text.Encoding.(???), 这里的???有很多类型(Default>>ANSI,UTF-8,Unicode....),按需要就行了


    http://www.cnblogs.com/jingshui_rwb/archive/2011/06/28/2092224.html



  • 相关阅读:
    POJ 1015 Jury Compromise【DP】
    POJ 1661 Help Jimmy【DP】
    HDU 1074 Doing Homework【状态压缩DP】
    HDU 1024 Max Sum Plus Plus【DP,最大m子段和】
    占坑补题。。最近占的坑有点多。。。
    Codeforces 659F Polycarp and Hay【BFS】
    Codeforces 659E New Reform【DFS】
    Codeforces 659D Bicycle Race【计算几何】
    廖大python实战项目第四天
    廖大python实战项目第三天
  • 原文地址:https://www.cnblogs.com/yhongl/p/3937899.html
Copyright © 2011-2022 走看看