如何将字符串解析为byte []

时间:2014-01-14 06:03:56

标签: c# string parsing bytearray

我在c#中有一个包含以下内容的字符串..

SMDR#0D#0APCCSMDR#0D#0A

现在根据我的要求,我需要用相同的格式将其解析为byte [] ..我必须将byte []显示为

SMDR#0D#0APCCSMDR#0D#0A

我需要这个,因为我的函数在byte []的这个格式中接受参数,而我需要传递的值只是这个..

SMDR#0D#0APCCSMDR#0D#0A

如何实现这一点。我需要更改字符串格式或字节[] ..

4 个答案:

答案 0 :(得分:4)

您可以使用以下代码执行此操作,我希望这会回答您的问题。

FROM http://www.dotnetperls.com/convert-string-byte-array

using System;
using System.Text;

class Program
{
    static void Main()
    {
  // Input string.
  const string input = "Dot Net Perls";

  // Invoke GetBytes method.
  // ... You can store this array as a field!
  byte[] array = Encoding.ASCII.GetBytes(input);

  // Loop through contents of the array.
  foreach (byte element in array)
  {
      Console.WriteLine("{0} = {1}", element, (char)element);
  }
    }
}

答案 1 :(得分:3)

我真的很困惑你的问题,但是如果你需要你的字符串表示为byte[]你可以使用LINQ:

var output = input.Select(x => (byte)x).ToArray();

答案 2 :(得分:2)

嗯,希望这是一个更具解释性的答案......

获取字节在技术上并不依赖于编码,因为它只是内存。但是,解释字节序列可以。您调用的函数需要什么编码?

如果期望原始的ascii字节:

Encoding.ASCII.GetBytes("hello, 你是天才"); // 11 bytes. chinese truncated

如果期望UTF-8数据(1个字节为ascii,2-4个字节为其他数据):

Encoding.UTF8.GetBytes("hello, 你是天才"); // 19 bytes, as utf8 

如果需要双宽字符(每个2字节,UCS-2):

Encoding.Unicode.GetBytes("hello, 你是天才") // 22 bytes

依此类推。查看System.Text.Encoding课程了解更多详情和选项。

答案 3 :(得分:0)

只需尝试此代码

string str="SMDR#0D#0APCCSMDR#0D#0A";
byte[] bytes = new byte[str.Length * sizeof(char)];
System.Buffer.BlockCopy(str.ToCharArray(), 0, bytes, 0, bytes.Length);
 foreach (var item in bytes)
        {
            Response.Write((char)item);
        }

更多澄清阅读 http://msdn.microsoft.com/en-us/library/system.buffer.blockcopy(v=vs.110).aspx