我想知道如果我能知道C#中的string
字节多长时间,任何人都知道吗?如何知道字节的字节大小?
回答
您可以像使用ASCII编码使用System.Text.Encoding
类来获得每个字节的字符。
或试试这个
System.Text.ASCIIEncoding.Unicode.GetByteCount(string);
System.Text.ASCIIEncoding.ASCII.GetByteCount(string);
愚蠢的问题,但如果字符串中的数据来自第三方文件,我们将如何知道是使用Unicode还是ASCII类? – 2014-02-24 01:11:09
@MatthewLock如果你想使用相同数量的字节作为内部表示,你应该使用UTF16(或者majidgeek的'Length * sizeof(Char)',它应该给出相同的结果,因为每个'Char'都是UTF16/2-字节)一个字符串。如果你真的想要整个对象所需的确切数量的内存,而不仅仅是其内部字符数组中的字节数,那么你可能会考虑[更一般的方法](http://stackoverflow.com/questions/1128315/)发现尺寸-的对象实例-在字节-在-C-尖锐)。 – Bob 2014-07-02 02:25:18
System.Text.ASCIIEncoding.Unicode.GetByteCount(yourString);
或者
System.Text.ASCIIEncoding.ASCII.GetByteCount(yourString);
从MSDN:
一个
String
对象是System.Char
对象代表一个字符串的有序集合。
所以,你可以使用这个:
var howManyBytes = yourString.Length * sizeof(Char);
就我所能理解的数据结构的基础知识而言,它是与 – LoneXcoder 2015-10-08 09:38:49
进行比较的最“朴实”选择。不要忘记考虑长度成员的大小。 int howMyBytes = yourString.Length * sizeof(Char)+ sizeof(int); – 2015-11-29 07:56:29
如果我的字符串长度大于Int,该怎么办? – 2017-05-11 06:53:56
退房[这个答案](http://stackoverflow.com/questions/472906/net-string-to-byte-array-c-sharp )。 – dasblinkenlight 2012-01-03 04:02:10
您是在问一个字符串对象占用多少内存,或者当写入文件或通过网络发送(即编码)时,字符串表示占用多少字节,因为这是两个完全不同的问题。 majidgeek几乎回答了前者,而diya回答了后者(至少对于两种常见的编码)。 – 2013-05-03 08:50:33
可能重复[需要多少字节?](http://stackoverflow.com/questions/3967411/how-much-bytes-will-take) – nawfal 2013-10-23 07:12:08