请问 这是一个c# 获取字符串的字节数的方法 求详解
publicintbytelenght(stringstr){byte[]bytestr=System.Text.Encoding.Unicode.GetBytes(st...
public int bytelenght(string str)
{
byte[] bytestr = System.Text.Encoding.Unicode.GetBytes(str);
int j = 0;
for (int i = 0; i < bytestr.GetLength(0); i++)
{
if (i % 2 == 0)
{
j++;
}
else
{
if (bytestr[i] > 0)
{
j++;
}
}
}
return j;
}
其中的循环的作用是什么?
System.Text.Encoding.Unicode.GetBytes(str).length与上面方法得到的结果是不是一样的?
谢谢 展开
{
byte[] bytestr = System.Text.Encoding.Unicode.GetBytes(str);
int j = 0;
for (int i = 0; i < bytestr.GetLength(0); i++)
{
if (i % 2 == 0)
{
j++;
}
else
{
if (bytestr[i] > 0)
{
j++;
}
}
}
return j;
}
其中的循环的作用是什么?
System.Text.Encoding.Unicode.GetBytes(str).length与上面方法得到的结果是不是一样的?
谢谢 展开
3个回答
展开全部
byte[] bytestr = System.Text.Encoding.Unicode.GetBytes(str);
这句是返回字符串的unicode字符 一个字符两个字节表示
for (int i = 0; i < bytestr.GetLength(0); i++)
循环字节
if (i % 2 == 0)
如果是一个字符第二位表示长度+1 因为ascii码的话第一位字节是全0
if (bytestr[i] > 0)
判断单数字节 也就是一个字符的第一位字节 为不为0 为0不计数 不为0计数
这句是返回字符串的unicode字符 一个字符两个字节表示
for (int i = 0; i < bytestr.GetLength(0); i++)
循环字节
if (i % 2 == 0)
如果是一个字符第二位表示长度+1 因为ascii码的话第一位字节是全0
if (bytestr[i] > 0)
判断单数字节 也就是一个字符的第一位字节 为不为0 为0不计数 不为0计数
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
不一样,简单的说
方法bytelenght的返回值是str.Length
而System.Text.Encoding.Unicode.GetBytes(str).Length返回的是加密后的长度,这里应该是str.Length*2
方法bytelenght的返回值是str.Length
而System.Text.Encoding.Unicode.GetBytes(str).Length返回的是加密后的长度,这里应该是str.Length*2
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
不一样,一个Unicode字符是由两个字节组成的,System.Text.Encoding.Unicode.GetBytes(str).length的结果是bytelenght方法得到的结果的两倍。bytelenght过滤了数值为0的字节
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询