c# 获取字符串的字节数的方法

将字符串转换为ASCII编码数组,只要是中文字节码就是ASCII编码63即"?",所以可以由此来进行判断


代码如下:

class StringOP
    {
        /// <summary>
        /// 获取中英文混排字符串的实际长度(字节数)
        /// </summary>
        /// <param name="str">要获取长度的字符串</param>
        /// <returns>字符串的实际长度值(字节数)</returns>
        public int getStringLength(string str)
        {
            if (str.Equals(string.Empty))
                return 0;
            int strlen = 0;
            ASCIIEncoding strData = new ASCIIEncoding();
            //将字符串转换为ASCII编码的字节数字
            byte[] strBytes = strData.GetBytes(str);
            for (int i = 0; i <= strBytes.Length - 1; i++)
            {
                if (strBytes[i] == 63)  //中文都将编码为ASCII编码63,即"?"号
                    strlen++;
                strlen++;
            }
            return strlen;
        }
    }

class TestMain
    {
        static void Main()
        {
            StringOP sop = new StringOP();
            string str = "I Love China!I Love 北京!";
            int iLen = sop.getStringLength(str);
            Console.WriteLine("字符串" + str + "的字节数为:" + iLen.ToString());
            Console.ReadKey();
        }
    }

将字符串以Unicode的编码转换为字节数组,判断每个字符的第二个字节是否大于0,来计算字符串的字节数


代码如下:

public static int bytelenght(string str)
        {
            //使用Unicode编码的方式将字符串转换为字节数组,它将所有字符串(包括英文中文)全部以2个字节存储
            byte[] bytestr = System.Text.Encoding.Unicode.GetBytes(str);
            int j = 0;
            for (int i = 0; i < bytestr.GetLength(0); i++)
            {
                //取余2是因为字节数组中所有的双数下标的元素都是unicode字符的第一个字节
                if (i % 2 == 0)
                {
                    j++;
                }
                else
                {
                    //单数下标都是字符的第2个字节,如果一个字符第2个字节为0,则代表该Unicode字符是英文字符,否则为中文字符
                    if (bytestr[i] > 0)
                    {
                        j++;
                    }
                }
            }
            return j;
        }

直接转成字节码获取长度:


代码如下:

byte[] sarr = System.Text.Encoding.Default.GetBytes(s);  
 int len = sarr.Length;

(0)

相关推荐

  • c#获取字符串宽度的示例代码(字节数方法)

    复制代码 代码如下: /**////  ///   ///  ///  ///  ///  private ArrayList GetSeparateSubString(string mOrigianlString, int subStringCharNumber) {   ArrayList resultList = new ArrayList(); string tempStr = mOrigianlString; int charNumber = subStringCharNumber;

  • c# 获取网页中指定的字符串信息的实例代码

    复制代码 代码如下: private void button2_Click(object sender, EventArgs e)          {              // Create a request for the URL.                 WebRequest request = WebRequest.Create("http://www.baidu.com/");              // If required by the server

  • C#常用的字符串扩展方法汇总

    本文实例汇总了C#常用的字符串扩展方法,分享给大家供大家参考.具体如下: EString.cs文件如下: 复制代码 代码如下: /// <summary> /// 扩展字符串类 /// </summary> public static class EString {         #region 数据转换 #region 转Int         /// <summary>         /// 转Int,失败返回0         /// </summary

  • C#清除字符串内空格的方法

    本文实例讲述了C#清除字符串内空格的方法,分享给大家供大家参考.具体如下: 关键代码如下: 复制代码 代码如下: /// <summary> /// 清除字符串内空格 /// </summary> /// <param name="str">需要处理的字符串</param> /// <returns>处理好后的字符串</returns> public static string ExceptBlanks(this

  • C#获取字符串后几位数的方法

    本文实例讲述了C#获取字符串后几位数的方法.分享给大家供大家参考.具体实现方法如下: #region 获取后几位数 public string GetLastStr(string str,int num) /// <summary> /// 获取后几位数 /// </summary> /// <param name="str">要截取的字符串</param> /// <param name="num">返回

  • C#字符串加密解密方法实例

    本文实例讲述了C#字符串加密解密方法.分享给大家供大家参考.具体如下: 复制代码 代码如下: #region 加密解密 static string encryptKey= "Oyea"; #region 加密字符串 public static string Encrypt(string str) /// <summary> /// 加密字符串 /// </summary> /// <param name="str">要加密的字符串

  • 在c#中把字符串转为变量名并获取变量值的小例子

    复制代码 代码如下: public class Program    {        public string str = "spp";        public string spp = "Hello World!"; public static void Main(string[] args)        {            Program p = new Program(); Console.WriteLine(p.GetType().GetFi

  • C#删除字符串中重复字符的方法

    本文实例讲述了C#删除字符串中重复字符的方法.分享给大家供大家参考.具体实现方法如下: 复制代码 代码如下: #region 删除重复字符  string s = "sdfffffsrlkjesgljfdg03940864e5=_0R9DTGR98YUI\\|||'\\???fdf///";  Response.Write("<br/>String:" + s + "<br/>Result:");  IEnumerable

  • asp.net中C#获取字符串中汉字的个数的具体实现方法

    符串可以包括数字,字母,汉字或者其他的字符.使用Char类型的IsDigit静态方法可以判断字符串中的字符是否为数字,使用Char类型中的IsLetter静态方法可以判断字符串中是否为字母.我们来实现一种方法来实现判断字符串中是否为汉字,通过此方法可以计算字符串中汉字的个数,运行效果如图: 首先根据效果图设置好Form的界面和内容,Box1.Text为输入的字符串,我们对该字符串的处理,来计算汉字的个数,双击Buton控件,编辑其单击事件代码. 我们看下汉字的Unicode范围,普遍给出了0x4

  • c# 获取字符串的字节数的方法

    将字符串转换为ASCII编码数组,只要是中文字节码就是ASCII编码63即"?",所以可以由此来进行判断 复制代码 代码如下: class StringOP    {        /// <summary>        /// 获取中英文混排字符串的实际长度(字节数)        /// </summary>        /// <param name="str">要获取长度的字符串</param>      

  • JS实现获取GIF总帧数的方法详解

    目录 前言 写在前面 思路分析 什么是Gif 组成结构 解析原理 数据块分析 Header Block Logical Screen Descriptor Global Color Table Graphics Control Extension Image Descriptor Image Data 实现代码 测试用例 插件地址 前言 有一个Gif图片,我们想要获取它的总帧数,超过一定帧数的图片告知用户不可上传,在服务端有很多现成的库可以使用,这种做法不是很友好,前端需要先将gif上传至服务端

  • 用JavaScript计算在UTF-8下存储字符串占用字节数

    最近和JavaScript纠缠上了. 遇到这么一个问题,数据库的字符集为UTF-8的,要在页面上使用JavaScript验证输入的文本用UTF-8存储时占用字节长度.JavaScript的String对象有length属性,但是这个计算的是字符数,不是字节数(问题总是翻来覆去的,记得当年玩Delphi的时候,还得写程序计算字符串的字符数,因为Delphi中String的length是字节数...).偷懒一点的办法是将验证代码中最大长度设置为数据库中对应字段的长度的1/3,但是这样准确来说有点不合

  • 计算一个Java对象占用字节数的方法

    本文实例讲述了如何计算(或者说,估算)一个Java对象占用的内存数量的方法.分享给大家供大家参考.具体分析如下: 通常,我们谈论的堆内存使用的前提是以"一般情况"为背景的.不包括下面两种情形:   某些情况下,JVM根本就没有把Object放入堆中.例如:原则上讲,一个小的thread-local对象存在于栈中,而不是在堆中. 被Object占用内存的大小依赖于Object的当前状态.例如:Object的同步锁是否生效,或者,Object是否正在被回收. 我们先来看看在堆中单个的Obj

  • js获取提交的字符串的字节数

    方法1:  复制代码 代码如下: function getBytesCount(str) { var bytesCount = 0; if (str != null) { for (var i = 0; i < str.length; i++) { var c = str.charAt(i); if (/^[\u0000-\u00ff]$/.test(c)) { bytesCount += 1; } else { bytesCount += 2; } } } return bytesCount;

  • JS正则表达式获取字符串中特定字符的方法

    实现的效果:在字符串中abcdefgname='test'sddfhskshjsfsjdfps中获取name的值test 实现的机制:通过replace的回调函数获取. 代码: 复制代码 代码如下: var str = "abcdefgname='test'sddfhskshjsfsjdfps"; var reg = /name='((\w|-|\s)+)/ig; str.replace(reg, function() { console.log(arguments.length);

  • Powershell小技巧之获取字符串的行数

    这里有一个简单的方法教你获得一个字符串(不是数组哦)包涵多少行: $text = @' This is some sample text Let's find out the number of lines. '@ $text.Length - $text.Replace("`n",'').Length + 1 从技术上讲,该示例使用了上面的字符串来创建多行字符串,但是这仅仅是一个例子.只要懂得了它的工作原理就能在多种场合使用. 支持所有的PS版本

  • 获取一个文件行数的方法

    第一种方法 思路:将文件中的字符一个一个读出,然后与 \n 作比较. 复制代码 代码如下: #include <stdio.h>      #include <string.h>       #include <errno.h> int main(int argc, char *argv[])       {            FILE *fp;            int n = 0;           int ch; if((fp = fopen(argv[

  • vbs:一段比较精简的代码实现取得字符串的"字节"数

    大家都知道汉字占用两个英文字母的长度,所以索取时要将其转换为长度2,这个例子比较简单的实现了这一功能 function find1(findstr) set rep1=new regexp rep1.Global=true rep1.IgnoreCase=true rep1.Pattern="[\u4E00-\u9FA5]" set str1=rep1.Execute(findstr) for each i in str1 lens=lens+1 next lens=lens + le

随机推荐