Me pregunto si puedo saber cuánto tiempo en bytes para un string
en C #, ¿alguien lo sabe?
103
Puede usar codificación como ASCII para obtener un carácter por byte usando la System.Text.Encoding
clase.
o prueba esto
System.Text.ASCIIEncoding.Unicode.GetByteCount(string);
System.Text.ASCIIEncoding.ASCII.GetByteCount(string);
Length * sizeof(Char)
, que debería dar el mismo resultado ya que cada uno Char
es UTF16 / 2-bytes) si desea el mismo número de bytes que la representación interna de una cadena. Si realmente desea la cantidad exacta de memoria que ocupa todo el objeto, en lugar de solo el número de bytes en su matriz de caracteres internos, entonces podría considerar un método más general .
Desde MSDN :
Un
String
objeto es una colección secuencial deSystem.Char
objetos que representan una cadena.
Entonces puedes usar esto:
var howManyBytes = yourString.Length * sizeof(Char);
System.Text.ASCIIEncoding.Unicode.GetByteCount(yourString);
O
System.Text.ASCIIEncoding.ASCII.GetByteCount(yourString);
string
ocupa un objeto o cuántos bytes ocupará la representación de una cadena cuando se escribe en un archivo o se envía a través de una red (es decir, codificada), porque esas son dos preguntas completamente diferentes? majidgeek casi respondió a la primera mientras que diya respondió a la última (al menos para dos codificaciones comunes).Unicode
es una propiedad estática deSystem.Text.Encoding
, que es la clase base deASCIIEncoding
, ambas declaraciones son en realidad iguales. También puede acceder a un miembro estático desde subclases (pero no se considera idiomático).