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);
    
  • 相关阅读:
    Zlib编译
    最新Webstrom, Idea 2019.2.3 的激活
    图像理解与深度学习开篇
    C# 反射(Reflection)
    SpringMVC中使用forward和redirect进行转发和重定向以及重定向时如何传参详解
    Navicat for Oracle中如何使用外键
    【数据库】主键,外键,主表,从表,关联表,父表,子表
    onclick事件没有反应的五种可能情况
    button小手设置 css的cursor
    Spring MVC F5刷新问题
  • 原文地址:https://www.cnblogs.com/wardensky/p/4552418.html
Copyright © 2011-2022 走看看