zoukankan      html  css  js  c++  java
  • C#中字符串与byte[]相互转换

    字符串转换为byte[]

    给定一个string,转换为byte[],有以下几种方法。

    方法1:

            static byte[] GetBytes(string str)
            {
                byte[] bytes = new byte[str.Length * sizeof(char)];
                System.Buffer.BlockCopy(str.ToCharArray(), 0, bytes, 0, bytes.Length);
                return bytes;
            }
    

    方法2:

    var array = Encoding.Default.GetBytes(input);
    //这里面的编码集可以是:Default、ASCII、Unicode、UTF8等。
    
    

    为了查看以上两种方法的区别,我写了下面一段测试代码。

    using System;
    using System.Text;
    namespace BytesTest
    {
        class Program
        {
            static byte[] GetBytes(string str)
            {
                byte[] bytes = new byte[str.Length * sizeof(char)];
                System.Buffer.BlockCopy(str.ToCharArray(), 0, bytes, 0, bytes.Length);
                return bytes;
            }
            static void Convert()
            {
                string input = "赵";
                Console.WriteLine("default");
                var array = Encoding.Default.GetBytes(input);
                foreach (var inst in array)
                {
                    Console.Write(inst);
                    Console.Write("	");
                }
                Console.WriteLine();
                Console.WriteLine("ASCII");
                array = Encoding.ASCII.GetBytes(input);
                foreach (var inst in array)
                {
                    Console.Write(inst);
                    Console.Write("	");
                }
                Console.WriteLine();
                Console.WriteLine("Unicode");
                array = Encoding.Unicode.GetBytes(input);
                foreach (var inst in array)
                {
                    Console.Write(inst);
                    Console.Write("	");
                }
                Console.WriteLine();
                Console.WriteLine("UTF8");
                array = Encoding.UTF8.GetBytes(input);
                foreach (var inst in array)
                {
                    Console.Write(inst);
                    Console.Write("	");
                }
                Console.WriteLine();
                Console.WriteLine("method");
                array = GetBytes(input);
                foreach (var inst in array)
                {
                    Console.Write(inst);
                    Console.Write("	");
                }
                Console.WriteLine();
            }
            static void Main(string[] args)
            {
                Convert();
                Console.Read();
            }
        }
    }
    

    输出

    default
    213     212
    ASCII
    63
    Unicode
    117     141
    UTF8
    232     181     181
    method
    117     141
    
    

    不同编码集输出不同不解释了。
    可以看到,方法1用的是unicode的方式。

    byte[]转换为字符串

    方法1

            static string GetString(byte[] bytes)
            {
                char[] chars = new char[bytes.Length / sizeof(char)];
                System.Buffer.BlockCopy(bytes, 0, chars, 0, bytes.Length);
                return new string(chars);
            }
    

    方法2

                var str1 = Encoding.Unicode.GetString(arr);
    
  • 相关阅读:
    cocos2dx 2.0 学习笔记简单动画
    几种插入数据的方法
    c#中如何获取本机用户名、MAC地址、IP地址、硬盘ID、CPU序列号、系统名称、物理内存
    C#高效编程改进C#代码的50个行之有效的办法摘抄笔记
    获取两个日期之间的每一天
    取SQL中某个字段的后两位
    该行已经属于另一个表 的解决办法
    一个实体对象不能由多个 IEntityChangeTracker 实例引用
    MVC返回JSON,IE下无法接收JSON,IE下JSON提示另存为
    entity framework DbContext Attach判断
  • 原文地址:https://www.cnblogs.com/wardensky/p/4552418.html
Copyright © 2011-2022 走看看