1

我可以找到很多关于如何将十六进制格式的字符串转换为十六进制字节数组的答案,但我想知道如何将带有文本的字符串转换为字节数组。

为了给你一个想法,这里是使用十六进制格式将文本转换为字节数组的代码:

FileStream fs = File.OpenRead(filePath);
byte[] fileInBytes;
using (BinaryReader br = new BinaryReader(fs))
{
    List<byte> bytesList = new List<byte>();
    while (fs.Position < fs.Length)
    {
        bytesList.Add(byte.Parse(Encoding.ASCII.GetString(br.ReadBytes(2)), 
            NumberStyles.HexNumber));
    }
    fileInBytes = bytesList.ToArray();
}
return fileInBytes;

如何使用字符串来实现这一点?

public static byte[] getBytesFromString(String str)
{
    //What now?
}

基本上,如果我输入一个包含 16 个字符的字符串,我想返回一个 8 个字节的字节数组。

4

2 回答 2

2

我不确定您将返回的字节数,但请参见下文。

public static byte[] getBytesFromString(String str)
{
   return Encoding.ASCII.GetBytes(str)
}
于 2013-10-12T18:12:49.027 回答
1

如果我理解您的意思,您的代码应该如下所示:

公共字节 [] getBytesFromString2(字符串 str)

{

        IList<byte> retValue = null;

        if (!string.IsNullOrEmpty(str) && str.Length == 16)
        {
            MemoryStream s_stream;

            using (s_stream = new MemoryStream(Encoding.ASCII.GetBytes(str)))
            {
                using (var br = new BinaryReader(s_stream))
                {
                    retValue = new List<byte>();

                    while (s_stream.Position < s_stream.Length)
                    {
                        retValue.Add(byte.Parse(Encoding.ASCII.GetString(br.ReadBytes(2)),
                            System.Globalization.NumberStyles.HexNumber));
                    }
                }
            }
        }

        return retValue.ToArray();
    }
于 2013-10-13T23:09:52.223 回答