字符串所占用的字节数

时间:2021-08-20 21:19:06


string str="CSDN,,.123论坛";




我怎么计算str这个字符串占用了几个字节呢?

拒绝先判断有几个汉字有几个字母几个符号然后占用的字节数相加!

6 个解决方案

#1


字符串所占字节数和编码有关。

比如用ascii表示"abc"只要3个字节,用unicode就要12个字节。

因此单纯讨论字符串字面占用多少字节没有意义。

你应该给定编码,用 GetBytes 函数转换成字节数组,再计算长度。

#2



string str = "123abc";
Byte[] data = System.Text.Encoding.Unicode.GetBytes(str);
int length = data.Length;

#3


默认是unicode编码,一个汉字也是一个位置,假如用下面方式编码

            string str = "CSDN,,.123论坛";
            byte[] bs =Encoding.GetEncoding("gb2312").GetBytes(str);
这个就是14个字节,一个汉字占2个字节

#4


字符串所占字节数和编码有关。
string str = "CSDN,,.123论坛";
byte[] data = Encoding.Default.GetBytes(str);
int dataLen = data.Length;//14

data = Encoding.Unicode.GetBytes(str);
dataLen = data.Length;//24

data = Encoding.UTF8.GetBytes(str);
dataLen = data.Length;//16

#5


P/invoke下有个IsTextUnicode 函数,准确率一般般,但是你的文本越多测试结果越准确
然后再确定字节数可能准确点

#6


正解
引用 1 楼  的回复:
字符串所占字节数和编码有关。

比如用ascii表示"abc"只要3个字节,用unicode就要12个字节。

因此单纯讨论字符串字面占用多少字节没有意义。

你应该给定编码,用 GetBytes 函数转换成字节数组,再计算长度。

#1


字符串所占字节数和编码有关。

比如用ascii表示"abc"只要3个字节,用unicode就要12个字节。

因此单纯讨论字符串字面占用多少字节没有意义。

你应该给定编码,用 GetBytes 函数转换成字节数组,再计算长度。

#2



string str = "123abc";
Byte[] data = System.Text.Encoding.Unicode.GetBytes(str);
int length = data.Length;

#3


默认是unicode编码,一个汉字也是一个位置,假如用下面方式编码

            string str = "CSDN,,.123论坛";
            byte[] bs =Encoding.GetEncoding("gb2312").GetBytes(str);
这个就是14个字节,一个汉字占2个字节

#4


字符串所占字节数和编码有关。
string str = "CSDN,,.123论坛";
byte[] data = Encoding.Default.GetBytes(str);
int dataLen = data.Length;//14

data = Encoding.Unicode.GetBytes(str);
dataLen = data.Length;//24

data = Encoding.UTF8.GetBytes(str);
dataLen = data.Length;//16

#5


P/invoke下有个IsTextUnicode 函数,准确率一般般,但是你的文本越多测试结果越准确
然后再确定字节数可能准确点

#6


正解
引用 1 楼  的回复:
字符串所占字节数和编码有关。

比如用ascii表示"abc"只要3个字节,用unicode就要12个字节。

因此单纯讨论字符串字面占用多少字节没有意义。

你应该给定编码,用 GetBytes 函数转换成字节数组,再计算长度。