2012-03-18 9 views
18

Tengo una cadena de utf8.Calc utf-8 tamaño de cadena en bytes?

Necesito obtener su tamaño. (bytes)

¿Siempre es x2? // Quiero decir multiplicar por 2

¿hay alguna función .net para esto?

p.s.

im haciendo esta pregunta becuase de mi último question ... necesito (en el archivo de mapeado mempry) a calc el desplazamiento de una cadena (UTF-8) - de otro proceso ..

+3

"Tengo una cadena de utf8." - No en .NET. O bien tiene una cadena (que es UTF-16), o bien tiene una matriz de bytes que representa una cadena codificada en UTF-8. En este último caso, puedes usar 'Array.Length'. – porges

+0

Con la cosa "x2" ... ¿Estás seguro de que no estás usando UTF-16? –

+0

@Porges ¿cada char se representa en 2 bytes, incluso si es desde 0.127? Ascii table? –

Respuesta

42

No, no siempre es x2 para UTF-8 y los cambios se basan en los contenidos reales. Para los caracteres ASCII es de 1 byte, pero puede ir en varios bytes para valores grandes de punto de código. Desea:

string s = // your string 
int len = Encoding.UTF8.GetByteCount(s); 
+0

thanks marc ...... (Mire mi edición - para ver de dónde viene esto ... .y ¿por qué lo pregunté :)) –

+0

@Royi entonces es posible que desee utilizar las sobrecargas que aceptan byte *, pero depende de la situación exacta –

+0

@MarcGravell lo siento, parece que no te entiendo ... digamos que yo tiene una cadena que contiene caracteres regulares (0..127) y caracteres especiales. ... algo como esto: 'string s =" abc אבג ";' ahora - digamos que quiero ir al final de la ubicación EN LA MEMORIA ... ¿cómo puedo calc ** la cantidad de bytes para compensar ** (mmf ...)? –