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进制的字符。

  • 相关阅读:
    APP内跳转链接用INTENT,但是用系统浏览器,在内部还是要webview
    MNIST练习
    Trigger_word_detection_v1a
    Neural_machine_translation_with_attention_v4a
    Operations_on_word_vectors_v2a
    Improvise_a_Jazz_Solo_with_an_LSTM_Network_v3a-2
    Dinosaurus_Island_Character_level_language_model_final_v3b
    Building_a_Recurrent_Neural_Network_Step_by_Step_v3b
    Sequence model
    Face_Recognition_v3a
  • 原文地址:https://www.cnblogs.com/eager/p/6774384.html
Copyright © 2011-2022 走看看