Эквивалент javax.nio.Buffer.flip() в С#
Вопрос
Я переношу часть 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
например - напишите в него, а затем вернитесь к началу.Это кусочек как переворачивание байтового буфера.Однако мы не можем сказать, уместно это или нет, без дополнительной информации о цели более высокого уровня.Возможно, есть гораздо лучший способ сделать это.