Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将纯文本字符串转换为十六进制格式的字节数组?_C#_Arrays_String_Hex_Implicit Conversion - Fatal编程技术网

C# 将纯文本字符串转换为十六进制格式的字节数组?

C# 将纯文本字符串转换为十六进制格式的字节数组?,c#,arrays,string,hex,implicit-conversion,C#,Arrays,String,Hex,Implicit Conversion,关于如何将十六进制格式的字符串转换为十六进制字节数组,我可以找到很多答案,但我想知道如何将带有文本的字符串转换为字节数组 下面是使用十六进制格式将文本转换为字节数组的代码: FileStream fs = File.OpenRead(filePath); byte[] fileInBytes; using (BinaryReader br = new BinaryReader(fs)) { List<byte> bytesList = new List<byte>

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

下面是使用十六进制格式将文本转换为字节数组的代码:

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;

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

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

public static byte[] getBytesFromString(String str)
{
   return Encoding.ASCII.GetBytes(str)
}

如果我理解您的意思,您的代码应该是:

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

{

IList retValue=null;
如果(!string.IsNullOrEmpty(str)&&str.Length==16)
{
记忆流s_流;
使用(s_stream=newmemoryStream(Encoding.ASCII.GetBytes(str)))
{
使用(var br=新的二进制读取器(s_流))
{
retValue=新列表();
while(s_stream.Position
我删除了以前的评论,这不是我需要的。如果我输入16个字符,我将返回16个字节,但我希望返回8个字节。所以每两个字符应该组成一个字节。我认为这是不可能的。。每个字符的存储方式都不同。。每个字符至少需要1个字节。ASCII恰好是您能得到的最小值(每个字符1个字节)。。对于Unicode,我认为每个字符最多可以有4个字节。这应该是可能的。。。我给你的示例函数从一个文件中读取文本,并且正是这样做的。。。每个字符由1个字节表示。。试着自己数数文件中的字符,或者用已知的值制作自己的文件并计数。这正是我所需要的,也许它会对需要它的人有用。我对接受的答案进行了评论,认为我阅读的示例描述是错误的。不过还是要谢谢你!
public static byte[] getBytesFromString(String str)
{
   return Encoding.ASCII.GetBytes(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();
    }