字符串转换为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);

C#中字符串与byte[]相互转换的更多相关文章

  1. java 中 image 和 byte[] 相互转换

      java 中 image 和 byte[] 相互转换可恶的…………其实也挺好的 只是把好不容易写出来的东西记下来,怕忘了…… 下面,我来介绍一个简单的 byte[] to image, 我们只需要 ...

  2. C#中string和byte[]相互转换问题解决

    本来想讲string转换为byte数组,通过在VS上打 ‘str. “来找,结果半天没发现跳出来的函数中有想要的,哭瞎 /(ㄒoㄒ)/~~ 这回将两种情况都记下来了.... string ---> ...

  3. Java中字符串和byte数组之间的相互转换

    1.将字符转换成byte数组 String str = "罗长"; byte[] sb = str.getBytes(); 2.将byte数组转换成字符 byte[] b={(by ...

  4. C/C++中字符串与数字相互转换

    数字转字符串: 用C++的streanstream: #include <sstream> #Include <string> string num2str(double i) ...

  5. C#中字节数组(byte[])和字符串相互转换

    转换过程主要使用到System.Text.Encoding命名空间下的类 1. 字符串转换成字节数组byte[]: string str = "This is test string&quo ...

  6. 16进制字符串和byte数组进行相互转换\将10进制转换为任意进制

    16进制字符串和byte数组进行相互转换 简介 1个byte对应8个bit,16进制使用4个bit,所以一个byte转成16进制,占用两位. JAVA代码 private static final c ...

  7. JAVA中文件与Byte数组相互转换的方法

    JAVA中文件与Byte数组相互转换的方法,如下: public class FileUtil { //将文件转换成Byte数组 public static byte[] getBytesByFile ...

  8. Python中字符串与字节之间相互转换

    Python中字符串与字节之间相互转换 ​ a = b"Hello, world!" # bytes object b = "Hello, world!" # ...

  9. C#中字节数组byte[]和字符串string类型的相互转换

    C#中字节数组byte[]和字符串string类型的相互转换: string转byte[]: byte[] byteArray = System.Text.Encoding.Default.GetBy ...

随机推荐

  1. Spring 实践 -AOP

    Spring 实践 标签: Java与设计模式 AOP引介 AOP(Aspect Oriented Programing)面向切面编程采用横向抽取机制,以取代传统的纵向继承体系的重复性代码(如性能监控 ...

  2. HDU 1394 (逆序数) Minimum Inversion Number

    原来求逆序数还可以用线段树,涨姿势了. 首先求出原始序列的逆序数,然后递推每一个序列的逆序数. #include <cstdio> #include <cstring> #in ...

  3. UVa 424 Integer Inquiry

    之前杭电上也做过a + b的高精度的题,不过这道题的区别是有多组数据. 之前做的时候开了3个字符数组a,b,c,在计算的时候还要比较a,b长度,短的那个还要加'0',还设置了一个add来存放进位. 现 ...

  4. wordpress plugins collection

    1/ simple page ordering 4.8星 wordpress的plugins唯一的好处就是命名简单易懂,这款插件从名称就可以看出来,用来对page页面排序的.只需要在后台page中拖拽 ...

  5. spring、springmvc、mybatis整合笔记

    这段时间上一个项目刚做完,下一个项目还没开始,趁这个时候来认真总结一下上个项目使用的ssm开发框架.由于,项目中关于使用ssm这部分的代码和配置是我们项目的整体架构师一个独立完成的,我们只负责业务部分 ...

  6. BZOJ 1935 园丁的烦恼

    离线,BIT. #include<iostream> #include<cstdio> #include<cstring> #include<algorith ...

  7. BZOJ 1589 采集糖果

    23333怎么调了一晚上.... #include<iostream> #include<cstdio> #include<cstring> #include< ...

  8. Using newInstance() to Instantiate a Fragment(转)

    I recently came across an interesting question on StackOverflow regarding Fragment instantiation: Wh ...

  9. nodejs的调试(node-inspector)

    我们在接触客户端javascript的时候,调试利器就是firebug ,也是当年为何喜欢用上firefox 浏览器的主要动力,当然,后来 chrome 插件里也出现了firebug的身影..... ...

  10. php.ini中Magic_Quotes_Gpc开关设置

    如果你网站空间的php.ini文件里的magic_quotes_gpc设成了off,那么PHP就不会在敏感字符前加上反斜杠(\\),由于表单提交的内容可能含有敏感字符,如单引号('),就导致了SQL ...