我想知道在 C # 中 string的字节数是多少,有人知道吗?
string
System.Text.ASCIIEncoding.Unicode.GetByteCount(yourString);
或者
System.Text.ASCIIEncoding.ASCII.GetByteCount(yourString);
您可以使用诸如 ASCII 之类的编码,通过使用 System.Text.Encoding类获得每个字节的字符。
System.Text.Encoding
或者试试这个
System.Text.ASCIIEncoding.Unicode.GetByteCount(string); System.Text.ASCIIEncoding.ASCII.GetByteCount(string);
来自 MSDN:
String对象是表示字符串的 System.Char对象的顺序集合。
String
System.Char
所以你可以用这个:
var howManyBytes = yourString.Length * sizeof(Char);
从.Net5开始,您可以使用 Convert.ToHexString。 还有一个反向操作的方法: Convert. FromHexString。
string将占用多少字节取决于您选择的编码(或者在您不知情的情况下在后台自动选择)。下面的示例代码显示了区别:
void Main() { string text = "a🡪"; Console.WriteLine("{0,15} length: {1}", "String", text.Length); PrintInfo(text, Encoding.ASCII); // Note that '🡪' cannot be encoded in ASCII, information loss will occur PrintInfo(text, Encoding.UTF8); // This should always be your choice nowadays PrintInfo(text, Encoding.Unicode); PrintInfo(text, Encoding.UTF32); } void PrintInfo(string input, Encoding encoding) { byte[] bytes = encoding.GetBytes(input); var info = new StringBuilder(); info.AppendFormat("{0,16} bytes: {1} (", encoding.EncodingName, bytes.Length); info.AppendJoin(' ', bytes); info.Append(')'); string decodedString = encoding.GetString(bytes); info.AppendFormat(", decoded string: \"{0}\"", decodedString); Console.WriteLine(info.ToString()); }
产出:
String length: 3 US-ASCII bytes: 3 (97 63 63), decoded string: "a??" Unicode (UTF-8) bytes: 5 (97 240 159 161 170), decoded string: "a🡪" Unicode bytes: 6 (97 0 62 216 106 220), decoded string: "a🡪" Unicode (UTF-32) bytes: 8 (97 0 0 0 106 248 1 0), decoded string: "a🡪"