Я красный: Сколько байтов займет строка? и Как узнать размер строки в байтах? и некоторые другие, но я не могу вычислить точное количество байтов, которое строка займет в памяти, используя BinaryWriter над MemoryMappedViewStream над MemoryMappedFile.
Иногда берется длина строки + 1, иногда длина строки + 2 ???
Я пробовал оба:
- System.Text.ASCIIEncoding.Default.GetByteCount(str)
- System.Text.ASCIIEncoding.Unicode.GetByteCount(str)
Но ни один из них не работает. Я попробовал длину строки плюс фиксированную сумму, но это тоже не работает.
Если я проверю разницу между BinaryWriter.BaseStream.Position до и после, то я не могу найти способ определить, какое точное количество байтов будет записано для строки (позиция после - позиция до). Похоже, есть выравнивание или что-то еще, что я не могу понять?
Как иметь правильное количество байтов для записи каждый раз?
Обновить
Теперь я использую Encoding.UTF8.GetByteCount(str) + 1;
, который дает мне почти правильный размер в большинстве случаев, но не всегда.