我需要計算一個子字符串將被轉換爲UTF8字節數組的大小(以字節爲單位)。這需要發生,而實際上並沒有對該子字符串進行轉換。不幸的是,我正在使用的字符串非常大,我必須小心,不要在內存中創建另一個大字符串(或字節數組)。計算UTF8轉換所需字節數的正確方法是什麼?
Encoding.UTF8對象上有一個名爲GetByteCount的方法,但我沒有看到一個重載,它不需要將字符串複製到一個字節數組中。這不適用於我:
Encoding.UTF8.GetByteCount(stringToCount.ToCharArray(), startIndex, count);
因爲stringToCount.ToCharArray()將創建我的字符串的副本。
這就是我現在所擁有的:
public static int CalculateTotalBytesForUTF8Conversion(string stringToCount, int startIndex, int endIndex)
{
var totalBytes = 0;
for (int i = startIndex ; i < endIndex; i++)
totalBytes += Encoding.UTF8.GetByteCount(new char[] { stringToCount[i] });
return totalBytes;
}
的GetByteCount方法似乎並不不得不採取在短短的焦炭的能力,所以這是我在妥協。
這是確定一個字符串的字節數正確的方式,轉換爲UTF-8之後,實際上並沒有這樣做的轉換?還是有更好的方法來做到這一點?
看看@ http://stackoverflow.com/questions/8511490/calculating-length-in-utf-8-of-java-string-without-actually-encoding-it(c#在char上有ishighsurrogate) – 2015-02-09 16:35:55