Единственный встроенный способ сделать это - преобразовать UTF-32 в строку. Должно работать что-то вроде следующего:
static Int32 ToLower(Int32 c)
{
// Convert UTF-32 character to a UTF-16 String.
var strC = Char.ConvertFromUtf32(c);
// Casing rules depends on the culture.
// Consider using ToLowerInvariant().
var lower = strC.ToLower();
// Convert the UTF-16 String back to UTF-32 character and return it.
return Char.ConvertToUtf32(lower, 0);
}
Вы указываете, что это неэффективно для ваших нужд. Вы оценили это?
Если вы все еще настаиваете на использовании обсадной колонны на UTF-32, то вам нужно будет сделать свою собственную. К счастью, Консорциум Unicode проделал большую часть тяжелой работы. Взгляните на файл Unicode , сворачивающий файл . Разобрать этот файл, сохраняя данные в соответствующей структуре. Тогда можно сопоставить регистр напрямую с вашими данными в любом формате, который вы предпочитаете.