0

将以下字节文本文件(acii hex 格式)转换为 C# 中的字节数组的最佳方法是什么?

C7 40 04 96 96 C9 F3 3F C7 ED
73 9D 3D 89 7D F6 2A 0B 4C 9D D6 82 E1 1F 4F F0
1A 45 4F 35 C7 0C 2B 7F 50 40 AC 79 33 C0 DD 0C
6B D2 9F D4 B6 60 9D 74 34 08 C5 19 92 1B 60 20
62 2A 20 B5 03 D3 2A 1F 39 71 DA F5 EE 78 17 9A
03 CA 3C E7 3E 10 75 C3 0F A5 AD AB C2 1D D6 35
0D C8 FD B2 93 F9 6D 53 C6 67 7E F3 38 CE F6 78
FA F5 0D 22 0B F3 FF 06 A2 51 4B E6 77 D5 49 B4
38 72 E9 0B AB 56 92 6D 25 70 D6 4F 4E 6A EB 39
F9 D2 7C 3B 97 66 35 74 A5 0E C0 1F EE E7 E7 CD
DA FF 41 39 8B F6 18 6E F4 3A 00 AB 2C E8 F9 37
7B 7C ED F4 50 43 F4 B2 F0 7C 39 9F 21 73 CF 7B
DD E0 B5 0E 81 70 4D D1 A8 CD 4F 81 3D DC CA CC
98 47 51 84 0C 00 48 07 0D 57 7B 3F 6A 24 A7 CA
BD E4 FF 67 78 EB F4 0F D7 76 45 65 45 77 E8 30
09 C4 51 DA A2 23 CC BF EE FC 9C 49 64 F5 5B F5
9D 64 77 78 3C E7

到目前为止,我有一种方法可以将其转换为所有这些值的字符串。

    public string ProcessTextFile(string filepath)
    {
        string sTextFile;
        string[] sDelimeters = { "\r\n" };
        string[] TextFileLines;
        string sOutput;

        using (System.IO.StreamReader sr = new System.IO.StreamReader(filepath))
        {

            sTextFile = sr.ReadToEnd();
            TextFileLines =  sTextFile.Split(sDelimeters, StringSplitOptions.None);
            sOutput = string.Join(" ", TextFileLines);
            sr.Close();
        }

        return sOutput;
    }
4

1 回答 1

3

将问题分解为步骤。你现在有什么?您有一串由空格和/或换行符分隔的两位十六进制值。

string input = "C7 40 04 96 96 C9 F3 3F C7 ED ...";

首先,您想将该字符串拆分为十六进制值。String.Split听起来是个完美的候选人。

string[] groups = input.Split(new[] {' ', '\n'}, StringSplitOptions.RemoveEmptyEntries);

接下来,您要将每个两位十六进制值转换为一个字节。Byte.Parse应该在这里解决问题。

byte[] ar = groups.Select(s => Byte.Parse(s, NumberStyles.HexNumber)).ToArray();
于 2012-11-28T04:54:54.517 回答