C#中字符串与byte[]相互转换
2015-06-04 17:19
603 查看
字符串转换为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[]转换为字符串
方法1static 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);
相关文章推荐
- C#实现关闭其他程序窗口或进程代码分享
- C#实现强制关闭当前程序进程
- c#笔记(P124)——IndexOf() & Substring()
- zigbee,质量追溯系统,上位机,mis系统,强大版,C#(一)
- C#设置开机启动项、取消开机启动项
- C# Winform多屏幕多显示器编程技巧实例
- c#实现多线程局域网聊天系统
- 使用C#调用SSIS包
- C# Lambda表达式
- 新手易犯的典型缺陷--C#
- C#Graphics类绘制直线与拖动
- C#进度轴控件分享
- C# tostring 格式化输出
- 在C#中进行类型转换
- 信鸽推送 .NET (C#) 服务端 SDK rest api 调用库(v1.2)
- C#获取日期汇总
- C#日期控件datetimepicker保存空值的三种方法
- c# 交换两个变量
- C#开源资源超级大汇总
- C#程序提示“正由另一进程使用,因此该进程无法访问该文件”的解决办法