C#跳过十六进制字符

时间:2011-05-16 04:28:31

标签: c# hex skip

我正在使用C#来读取文件,我需要(有时)在输出下一个字节之前跳过几个字节。例如:

31 32 33 34 35 36 37 38 39 

我想跳过前两个(或任何给定数字)字节,然后输出下一个字节。问题是,使用下面的代码不会这样做,我不知道如何。我需要能够在整个程序中使用“跳过”功能。如果有人能帮助我,我将非常感激!

        String fileDirectory = "C:\\t.txt";
        StreamReader reader = new StreamReader(fileDirectory);
        long stickNoteLength = fileDirectory.Length;

        int hexIn;
        String hex = "";

        for (int i = 0; (hexIn = reader.Read()) != -1; i++)
        {
            for (int x = 0; x < 2; x++)
            {
               hex = hexIn.ToString("X2");
            }
            MessageBox.Show(hex);
        }

1 个答案:

答案 0 :(得分:2)

x上的内部for循环不会消耗文件中的任何字符。它实际上只是取当前字节并将其连续两次转换为十六进制,实际上没有任何效果。它实际上是i上的外部循环消耗字符。你想做更像这样的事情:

for (int i = 0; (hexIn = reader.Read()) != -1; i++)
{
    if (i >= 2)
    {
        hex = hexIn.ToString("X2");
        MessageBox.Show(hex);
    }
}

虽然使用Seek函数直接跳转到下一个想要阅读的位置会更有效:

reader.BaseStream.Seek(2, SeekOrigin.Current);  // jump two characters forward