字符串和字符数组之间的转换

  • 格式:docx
  • 大小:23.45 KB
  • 文档页数:7

下载文档原格式

  / 7
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

字符串和字符数组之间的转换

2010-11-02 16:53:00| 分类: |举报|字号订阅

字符串类提供了一个void ToCharArray() 方法,该方法可以实现字符串到字符数组的转换。如下例:

private void TestStringChars()

{

string str = "mytest";

char[] chars = ();

= "";

"Length of \"mytest\" is " + + "\n");

"Length of char array is " + + "\n");

"char[2] = " + chars[2] + "\n");

}

例中以对转换转换到的字符数组长度和它的一个元素进行了测试,结果如下:

Length of "mytest" is 6

Length of char array is 6

char[2] = t

可以看出,结果完全正确,这说明转换成功。那么反过来,要把字符数组转换成字符串又该如何呢?

我们可以使用类的构造函数来解决这个问题。类有两个构造函数是通过字符数组来构造的,即 String(char[]) 和String[char[], int, int)。后者之所以多两个参数,是因为可以指定用字符数组中的哪一部分来构造字符串。而前者则是用字符数组的全部元素来构造字符串。我们以前者为例,

在 TestStringChars() 函数中输入如下语句:

char[] tcs = {'t', 'e', 's', 't', ' ', 'm', 'e'};

string tstr = new String(tcs);

"tstr = \"" + tstr + "\"\n");

运行结果输入 tstr = "test me",测试说明转换成功。

实际上,我们在很多时候需要把字符串转换成字符数组只是为了得到该字符串中的某个字符。如果只是为了这个目的,那大可不必兴师动众的去进行转换,我们

只需要使用的 [] 运算符就可以达到目的。请看下例,再在TestStringChars() 函数中加入如如下语名:

char ch = tstr[3];

"\"" + tstr + "\"[3] = " + ());

正确的输出是 "test me"[3] = t,经测试,输出正确。

6. 字符串和字节数组之间的转换

如果还想从类中找到方法进行字符串和字节数组之间的转换,恐怕你会失望了。为了进行这样的转换,我们不得不借助另一个类:。该类提供了 bye[] GetBytes(string) 方法将字符串转换成字节数组,还提供了 string GetString(byte[]) 方法将字节数组转换成字符串。

类似乎没有可用的构造函数,但我们可以找到几个默认的 Encoding,

即 (获取系统的当前 ANSI 代码页的编码)、(获取 7 位 ASCII 字符集的编码)、(获取采用 Little-Endian 字节顺序的 Unicode 格式的编码)、(获取 UTF-7 格式的编码)、(获取UTF-8 格式的编码) 等。这里主要说说和用于转换的区别。

在字符串转换到字节数组的过程中,会将每个单字节字符,如半角英文,转换成 1 个字节,而把每个双字节字符,如汉字,转换成 2个字节。而则会将它们都转换成两个字节。我们可以通过下列简单的了解一下转换的方法,以及使用和的区别:

private void TestStringBytes()

{

string s = "C#语言";

byte[] b1 =

byte[] b2 =

string t1 = "", t2 = "";

foreach (byte b in b1)

{

t1 += ("") + " ";

}

foreach (byte b in b2)

{

t2 += ("") + " ";

}

= "";

" = " + + "\n");

+ "\n");

" = " + + "\n");

+ "\n");

}

运行结果如下,不说详述,相信大家已经明白了。

= 6

67 35 211 239 209 212

= 8

67 0 35 0 237 139 0 138

将字节数组转换成字符串,使用 Encoding 类的 string

GetString(byte[]) 或 string GetString(byte[], int, int) 方法,具体使用何种 Encoding 还是由编码决定。在 TestStringBytes() 函数中添加如下语句作为实例:

byte[] bs = {97, 98, 99, 100, 101, 102};

string ss =

"The string is: " + ss + "\n");

运行结果为:The string is: abcdef

7. 各种数值类型和字节数组之间的转换

在第 1 条中我们可以查到各种数值型需要使用多少字节的空间来保存数据。将某种数值类型的数据转换成字节数组的时候,得到的一定是相应大小的字节数组;同样,需要把字节数组转换成数值类型,也需要这个字节数组大于相应数

值类型的字节数。现在介绍此类转换的主角:。该类提供了 byte[]

GetBytes(...) 方法将各种数值类型转换成字节数组,也提供了 ToInt32、ToInt16、ToInt64、ToUInt32、ToSignle、ToBoolean 等方法将字节数组转换成相应的数值类型。

由于这类转换通常只是在需要进行较细微的编码/解码操作时才会用到,所

以这里就不详细叙述了,仅把类介绍给大家。

8. 转换成十六进制