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("/t"); 
            } 
            Console.WriteLine(); 
            Console.WriteLine("ASCII"); 
            array = Encoding.ASCII.GetBytes(input); 
            foreach (var inst in array) 
            { 
                Console.Write(inst); 
                Console.Write("/t"); 
            } 
            Console.WriteLine(); 
            Console.WriteLine("Unicode"); 
            array = Encoding.Unicode.GetBytes(input); 
            foreach (var inst in array) 
            { 
                Console.Write(inst); 
                Console.Write("/t"); 
            } 
            Console.WriteLine(); 
            Console.WriteLine("UTF8"); 
            array = Encoding.UTF8.GetBytes(input); 
            foreach (var inst in array) 
            { 
                Console.Write(inst); 
                Console.Write("/t"); 
            } 
            Console.WriteLine(); 
            Console.WriteLine("method"); 
            array = GetBytes(input); 
            foreach (var inst in array) 
            { 
                Console.Write(inst); 
                Console.Write("/t"); 
            } 
            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); 

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/20970.html

(0)
上一篇 2021年7月19日
下一篇 2021年7月19日

相关推荐

发表回复

登录后才能评论