我在c#中有一个包含以下内容的字符串..
SMDR#0D#0APCCSMDR#0D#0A
现在根据我的要求,我需要用相同的格式将其解析为byte [] ..我必须将byte []显示为
SMDR#0D#0APCCSMDR#0D#0A
我需要这个,因为我的函数在byte []的这个格式中接受参数,而我需要传递的值只是这个..
SMDR#0D#0APCCSMDR#0D#0A
如何实现这一点。我需要更改字符串格式或字节[] ..
答案 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