Допустим, у нас есть строка в UTF-8. Она должна занимать в памяти ровно 38 байт. Ни больше, не меньше, чтобы не допустить смещение указателей. Символы там могут занимать как один, так и два байта. Как это реализовать наиболее просто в C#? Размер строки в байтах хранится в int переменной.
Чтобы узнать длину в байтах в конкретной кодировке есть метод GetByteCount, от него и нужно плясать. А вообще в UTF-8 символ может и 3, и 4 байтами кодироваться, но не суть. Например метод возвращающий массив байтов определённой длины с обрезанной или наоборот дополненной стройкой в определённой кодировке.
byte[] GetCutBytes(string str, int maxlength, Encoding encoding)
{
char[] charArray = str.ToCharArray();
int length = charArray.Length;
while (encoding.GetByteCount(charArray, 0, length) > maxlength)
length--;
byte[] returned = new byte[maxlength];
encoding.GetBytes(charArray, 0, length, returned, 0);
return returned;
}
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Есть список объектов со следующей структурой(что-то вроде оповещений):
Как из метода GetValue() возвратить значение типа Nullable
Здравствуйте, собственно интересует каким образом можно зашифровать, обсуфицировать программу которая создается в динамической компиляции