Какой самый быстрый способ пропустить символы Unicode - PullRequest
0 голосов
/ 28 сентября 2011

Я пытаюсь добраться до определенных символов в файле в формате UTF-16.

Я знаю, сколько символов я хочу пропустить. В настоящее время я использую команду TextReader.ReadBlock для чтения временного массива всех символов, которые я хочу пропустить, но я считаю, что установка позиции будет быстрее. Я просто не знаю, как определить новую должность.

Есть идеи, какой самый быстрый способ перейти к позиции в файле Unicode, если у вас есть сколько символов, которые вы хотите пропустить?

Ответы [ 2 ]

0 голосов
/ 28 сентября 2011

Не так просто пропустить блок, который требует относительного позиционирования.

Если вы можете вычислить начало следующего блока (смещение от начала файла), это выполнимо:

        int nextPos = ...;

        reader.DiscardBufferedData();
        reader.BaseStream.Position = nextPos;
        line = reader.ReadLine();

Возможно, вам придется настроить расчет, потому что файл UTF-16может иметь спецификацию (2 старших байта).

0 голосов
/ 28 сентября 2011

С учетом того, что в этом UTF-16, а не в UTF-8 (где размер символов может варьироваться) у вас есть 2 байта на символ.Таким образом, чтобы пропустить x символов, вы должны пропустить x * 2 байта.

...