Estoy haciendo mucha manipulación de cadenas en C#, y realmente necesito que las cadenas se almacenen un byte por carácter. Esto se debe a que necesito gigabytes de texto simultáneamente en la memoria y está causando problemas de poca memoria. Sé con certeza que este texto nunca contendrá caracteres que no sean ASCII, por lo que, para mi propósito, el hecho de que System.String y System.Char almacenan todo, ya que dos bytes por carácter son innecesarios y un problema real.Almacenar una cadena como UTF8 en C#
Estoy a punto de comenzar a codificar mis propias clases CharAscii y StringAscii - la cadena uno mantendrá básicamente sus datos como byte [], y expondrá métodos de manipulación de cadenas similares a los que hace System.String. Sin embargo, esto parece mucho trabajo para hacer algo que parece ser un problema muy estándar, así que realmente estoy publicando aquí para verificar que ya no haya una solución más fácil. ¿Hay alguna forma por la que pueda hacer que System.String almacene datos internamente como UTF8 que no he notado, o de alguna otra forma el problema?
¿Es .NET la mejor manera de acceder aquí? Parece que C/C++ sería una mejor opción para la manipulación de cadenas enormes en la memoria. –
Jon Skeet investigó este último año http://msmvps.com/blogs/jon_skeet/archive/2011/04/05/of-memory-and-strings.aspx –
[Somewhere] (http://msdn.microsoft.com /es-es/library/windows/desktop/bb540816%28v=vs.85%29.aspx) hay una cadena utf8 – Gabber