Я бы ожидал, что оно будет эффективно :
string text = srcEncoding.GetString(bytes);
return destEncoding.GetBytes(text);
Теперь он может сделать это более эффективным способом памяти, чем это, - но для этого ему необходимо декодировать исходные двоичные данные и снова кодировать их как двоичные данные в другой кодировке.
Обратите внимание, что выполнение кодирования по буквам не всегда работает - например, одна байтовая последовательность UTF-8 может декодироваться в одну кодовую точку Unicode, представленную в качестве суррогатной пары кодовых единиц UTF-16 ( char
значений). Использование Encoder
и декодера pair would allow "chunks" of data to be encoded/decoded at a time, removing the need for the whole text data to be in memory at one time... possibly writing to a
MemoryStream` или чего-либо подобного для хранения закодированных данных.