Я шифрую данные в поток. Если, например, мои данные имеют тип Int32
, я буду использовать BitConverter.GetBytes(myInt)
, чтобы получить байты, а затем записать эти байты в поток.Чтение строки из потока
Чтобы прочитать данные обратно, я прочитал sizeof(Int32)
, чтобы определить количество байт для чтения, читать эти байты, а затем использовать BitConverter.ToInt32(byteArray, 0)
, чтобы преобразовать байты обратно в Int32
.
Так как бы я сделал это со строкой? Написание строки не проблема. Но трюк при чтении строки - это знать, сколько байтов нужно прочитать, прежде чем я смогу преобразовать ее обратно в строку.
Я нашел похожие вопросы, но они, похоже, считают, что строка занимает весь поток и только что читается до конца потока. Но здесь я могу иметь любое количество других элементов до и после строки.
Отметьте, что StringReader
здесь не является вариантом, так как я хочу иметь возможность обрабатывать данные файла, которые могут быть больше, чем я хочу загрузить в память.
Вы можете посмотреть, чтобы с помощью [BinaryReader] (https://msdn.microsoft.com/en-us/library/system.io.binaryreader (v = vs.110) .aspx)/BinaryWriter для чтения и записи ваших данных. Он имеет методы обработки строк в нем. –
@ScottChamberlain: Спасибо, но в конечном итоге я использую 'CryptoStream'. –
Вы можете сделать новый BinaryReader (yourCryptoStream) ', просто подайте« Stream »в конструктор двоичного чтения/записи. –