搜索字符串并转换为字节c#

时间:2014-09-20 13:50:45

标签: java c#

我想从txt文件中获取特定的字符串,之后将字符串转换为byte,例如我有这个txt文件:

“一”

ID_NUMBER:* = 344E6F4D6F7265486178785454332100

“二”

ID_NUMBER:* = 3536336A775E3825246E773543563437

“三”

ID:_number * = BDBD2EB72D82473DBE09F1B552A8983

现在我想要的是搜索标题,然后获取标题的id_number,之后将其转换为类似于标题的字节:

两个(  byte [] two = new byte [] {0xBD,0xBD,0x2E,0xB7,0x2D,0x82,0x47,0x3D,0xBE,0x09,0xF1,0x1B,0x55​​,0x2A,0x89,0x83};

我试试这个但是不能工作:

    string[] s = File.ReadAllLines("MyFilePath.txt");
List<byte[]> byteArrays = new List<byte[]>();
foreach (string st in s.Where(x => x.Trim().StartsWith("id_number:*=")).Select(x => x.Skip(12)))
{
    byte[] b = new byte[(int)((st.Length + 1) / 2)];
    for (int i = 0; i < (int)((st.Length + 1) / 2); i++)
    {
        var byteString = (st.Skip(2 * i).Length > 2) ?  st.Skip(2 * i).Take(2) : "0"+st.Skip(2 * i);
        var bt = Convert.ToByte(byteString, 16);
        b[i] = bt;
    }
    byteArrays.Add(b);
}

我现在不能把标题放在哪里?

请帮助

1 个答案:

答案 0 :(得分:0)

selman22所说的是正确的。

我已对您的代码进行了更改以使其正常工作。这是工作代码。

string[] s = File.ReadAllLines(@"E:\test\test.txt");
var byteArrays = new List<byte[]>();
foreach (string st in s.Where(x => x.Trim().StartsWith("id_number:*=")).Select(x => new string(x.Skip(12).ToArray())))
{
    byte[] b = new byte[(int)((st.Length + 1) / 2)];
    for (int i = 0; i < (int)((st.Length + 1) / 2); i++)
    {
        var byteString = ((st.Skip(2 * i).Count() > 2) ? new string(st.Skip(2 * i).Take(2).ToArray()) : "0" + new string(st.Skip(2 * i).ToArray()));
        var bt = Convert.ToByte(byteString, 16);
        b[i] = bt;
    }
    byteArrays.Add(b);
}