У меня есть приложение, преобразованное из Python 2 (где строки, по сути, являются списками байтов), и я использую строку в качестве удобного буфера байтов.
Я переписываю часть этого кода на языке Boo(Python-подобный синтаксис, работает на .NET), и я обнаружил, что строки имеют встроенный тип кодирования, такой как ASCII, UTF-8 и т. Д. Большая часть информации, касающейся байтов, относится к массивам байтов, которые (по-видимому,) фиксированной длины, что делает их довольно неудобными для работы.
Я, очевидно, могу получить байты из строки, но с риском расширения некоторых символов до нескольких байтов или отбрасывания / изменения байтов выше 127 и т. д. ЭтоЭто хорошо, и я полностью понимаю причины этого, но мне может пригодиться (а) кодировка, которая не гарантирует преобразование или отбрасывание символов, так что я могу использовать строку в качестве удобного байтового буфера, или (б)какой-то класс ByteString, который дает удобство строкового класса.(В идеале последнее, так как это кажется менее взломанным.) Кто-нибудь из них уже существует?(Или тривиально реализовать?)
Я знаю о System.IO.MemoryStream, но есть перспектива создания одного из них каждый раз, а затем создание System.IO.StreamReader в конце просто дляполучить доступ к ReadToEnd () не кажется очень эффективным, и это в чувствительном к производительности коде.
(я надеюсь, никто не возражает, что я пометил это как C #, так как я чувствовал, что ответы, вероятно, применимы и там,и что пользователи C # могут иметь хорошее представление о возможных решениях.)
РЕДАКТИРОВАТЬ: я также только что обнаружил System.Text.StringBuilder - опять же, есть ли такая вещь для байтов?