在C#中,我试图使用已经以字节为单位的字符串到字节数组,因为我使用的是2.0框架,所以我无法使用Linq。我只想将字符串用作字节数组,因此将其转换。
想做:
string MYBytes ="{ 0x4D, 0x5A, 0x90 }";
byte[] getBytes = MYBytes;
答案 0 :(得分:1)
基本上,您希望拆分字符串并将每个项目分别解析为一个字节。这是一种方法:
<强>更新强>
看起来我粘贴在错误的小提琴链接中。这是他正确链接的代码。
using System;
using System.Globalization;
public class Program
{
public static void Main()
{
string MYBytes = "{ 0x4D, 0x5A, 0x90 }";
string[] hexParts = MYBytes.Split(new char[] { ',', '{', '}' }, StringSplitOptions.RemoveEmptyEntries);
byte[] bytes = new byte[hexParts.Length];
for(int i = 0; i < hexParts.Length; i++)
bytes[i] = Byte.Parse(hexParts[i].Substring(3), NumberStyles.HexNumber);
foreach(byte b in bytes)
Console.WriteLine("{0:X2}", b);
}
}
答案 1 :(得分:0)
这样的事情应该起作用=&gt; Encoding.UTF8.GetBytes("4d5a90", 0, resultArray, 0)
请参阅http://msdn.microsoft.com/en-us/library/xsy6z64h(v=vs.110).aspx
另见How can I convert a hex string to a byte array?
或使用不安全的代码
获取一个字节
unsafe { fixed(char* s = someString) { byte b = s[0]; }}
获取固定数量的字节
unsafe { fixed(char* s = someString) fixed(byte * bz = (byte*) s) fixed byte[3] b = bz; }
我认为你可以跳过修复到字节*
unsafe { fixed(char* s = someString) fixed byte[3] b = (byte *)s; }