Эквивалент javax.nio.Buffer.flip () в c # - PullRequest
2 голосов
/ 03 марта 2009

Я портирую часть кода Java и должен иметь возможность перевернуть (javax.nio.Buffer.flip()).

Я использую byte [] для хранения данных, и я хочу перевернуть этот байтовый массив, так же, как это делает Buffer, как я полагаю, под классом Buffer также используется byte [].

Спасибо

Ответы [ 2 ]

1 голос
/ 03 марта 2009

В .NET нет прямого эквивалента пакета java.nio. Асинхронный ввод-вывод обычно обрабатывается с помощью Stream.BeginRead / EndRead, но это не совсем та же модель. Не могли бы вы рассказать нам, что вы пытаетесь сделать?

РЕДАКТИРОВАТЬ: Теперь вы предоставили низкоуровневую информацию о том, что вы пытаетесь сделать, но, поскольку нет реального эквивалента для nio классов в .NET, вы либо должны написать их самостоятельно (не невозможно, но боль) или использовать другой тип более высокого уровня. Например, вы можете использовать MemoryStream - написать в него, а затем вернуться к началу. Это бит , как переворачивание байтового буфера. Однако мы не можем сказать, подходит ли это или нет, без дополнительной информации о цели более высокого уровня. Там может быть гораздо лучший способ сделать это.

0 голосов
/ 03 марта 2009

ByteBuffer может использовать byte[] (создать, скажем, из ByteBuffer.wrap) или не-Java кучу памяти (созданной с ByteBuffer.allocateDirect) Вы можете получить базовый byte[] с ByteBuffer.array. Но вызов flip и подобных методов в буферах не влияет на фактические данные. Вместо этого смещения, связанные с данными, изменяются. Таким образом, эквивалентом byte будет изменение смещений, которые ваш код ассоциирует с ним.

...