zoukankan      html  css  js  c++  java
  • c#中char、string转换为十六进制byte的浅析

    问题引出: string转换为byte(十六进制)

     1  static void Main(string[] args)
     2 {
     3        string str = "05143124";
     4        byte[] b = Encoding.Default.GetBytes(str);
     5        for (int i = 0; i < b.Length; i++)
     6        {
     7             Console.WriteLine(b[i]);
     8        }
     9        Console.ReadKey();
    10 }

    运行结果:

    问题来了,为什么转化的结果是这个呢?48、53...是表示十进制还是十六进制呢?为什么不是0x00,0x05....或者是其他的....于是在网上搜查......

    ASCII引出,在计算机,所有的数据在存储和运算都要使用二进制数表示(因为计算机用高电平和低电平分别表示1和0),例如,像a、b、c、d这样的52个字母(包括大写)、以及0、1等数字还有一些常用的符号(例如*、#、@等)在计算机中存储时也要使用二进制数来表示,而具体用哪些二进制数字表示哪个符号,当然每个人都可以约定自己的一套(这就叫编码),而大家如果要想互相通信而不造成混乱,那么大家就必须使用相同的编码规则,于是美国有关的标准化组织就出台了ASCII编码,统一规定了上述常用符号用哪些二进制数来表示。

    通过表可以看出,字符串转化为字节数组,是将每个字符转化为对应的ASCII码,在C#中(VS 2013)打印字符串都是打印的十进制,若想打印出十六进制的需对代码作微小变得。

     1 static void Main(string[] args)
     2 {
     3        string str = "05143124";
     4        byte[] b = Encoding.Default.GetBytes(str);
     5 
     6        for (int i = 0; i < b.Length; i++)
     7        {
     8          Console.WriteLine(b[i].ToString("x2"));
     9       }
    10       Console.ReadKey();
    11 }

    运行结果:

    ToString("x2") 为C#中的字符串格式控制符

    x表示     十六进制 
    2表示     每次都是两位数

    这个结果输出的就是16进制的字符。

  • 相关阅读:
    框架基础
    Servlet
    JSP数据交互二
    动态网页开发基础
    数据交互
    期末Java Web大作业----简易的学生管理系统
    南阳71----独木舟上的旅行
    南阳1092----数字分隔(二)
    顺序表、链表、栈和队列
    各类排序模版(计数排序、基数排序、桶排序、冒泡排序、选择排序、插入排序、希尔排序、归并排序、原地归并排序、快速排序、堆排序)
  • 原文地址:https://www.cnblogs.com/eager/p/6774384.html
Copyright © 2011-2022 走看看