Вопрос

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

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

Спасибо

Это было полезно?

Решение

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

Другие советы

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top