在字节数组中使用字节串

时间:2014-06-12 00:33:59

标签: c#

在C#中,我试图使用已经以字节为单位的字符串到字节数组,因为我使用的是2.0框架,所以我无法使用Linq。我只想将字符串用作字节数组,因此将其转换。

想做:

string MYBytes ="{ 0x4D, 0x5A, 0x90 }";
byte[] getBytes = MYBytes;

2 个答案:

答案 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);
    }
}

https://dotnetfiddle.net/gRMEOM

答案 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; }