用于从字符串转换为字节的内置函数

时间:2010-03-18 08:33:09

标签: c#

我有以下功能:

public static byte[] StringToByte(string str)
{
    int length = str.Length;
    byte[] ba = new byte[length];
    for (int i = 0; i < length; i++)
    {           
        ba[i] = (byte)str[i];
    }
    return ba;
}

我想知道这个方法是否有内置函数?

6 个答案:

答案 0 :(得分:9)

System.Text.Encoding.GetBytes(string)

答案 1 :(得分:6)

System.Text.ASCIIEncoding  encoding=new System.Text.ASCIIEncoding();
byte[] bytes= encoding.GetBytes(stringData);

答案 2 :(得分:4)

不起作用。真的 - 你的rappraoch坏了。您假设低位字节是您需要的字节。你试图实现吗?字符串的ASCII表示?什么代码页?

检查以下页面:

http://msdn.microsoft.com/en-us/library/system.text.encoding.aspx

使用其中提到的类之一,可能是ASCIIEncoding类。

.NET Framework提供了Encoding类的以下实现,以支持当前的Unicode编码和其他编码:

.NET Framework提供了Encoding类的以下实现,以支持当前的Unicode编码和其他编码:

  • ASCIIEncoding将Unicode字符编码为单个7位ASCII字符。此编码仅支持U + 0000和U + 007F之间的字符值。代码页20127.也可通过ASCII属性获得。
  • UTF7Encoding使用UTF-7编码对Unicode字符进行编码。此编码支持所有Unicode字符值。代码页65000.也可通过UTF7属性获得。
  • UTF8Encoding使用UTF-8编码对Unicode字符进行编码。此编码支持所有Unicode字符值。代码页65001.也可通过UTF8属性获得。
  • UnicodeEncoding使用UTF-16编码对Unicode字符进行编码。支持小端(代码页1200)和大端(代码页1201)字节顺序。也可通过Unicode属性和BigEndianUnicode属性获得。
  • UTF32Encoding使用UTF-32编码对Unicode字符进行编码。支持小端(代码页12000)和大端(代码页12001)字节顺序。也可通过UTF32属性获得.ASCIIEncoding将Unicode字符编码为单个7位ASCII字符。此编码仅支持U + 0000和U + 007F之间的字符值。代码页20127.也可通过ASCII属性获得。
  • UTF7Encoding使用UTF-7编码对Unicode字符进行编码。此编码支持所有Unicode字符值。代码页65000.也可通过UTF7属性获得。
  • UTF8Encoding使用UTF-8编码对Unicode字符进行编码。此编码支持所有Unicode字符值。代码页65001.也可通过UTF8属性获得。
  • UnicodeEncoding使用UTF-16编码对Unicode字符进行编码。支持小端(代码页1200)和大端(代码页1201)字节顺序。也可通过Unicode属性和BigEndianUnicode属性获得。
  • UTF32Encoding使用UTF-32编码对Unicode字符进行编码。支持小端(代码页12000)和大端(代码页12001)字节顺序。也可通过UTF32属性获得。

答案 3 :(得分:2)

有。它是Encoding.GetBytes

答案 4 :(得分:2)

确切地说,并举例:

public static byte[] StrToByteArray(string str) {
    System.Text.ASCIIEncoding  encoding = new System.Text.ASCIIEncoding();
    return encoding.GetBytes(str);
}

将ASCIIEncoding替换为您要使用的编码。

答案 5 :(得分:0)

string s = "Like this";
System.Text.ASCIIEncoding enc = new System.Text.ASCIIEncoding();
byte[] b = enc.GetBytes(s);