精华内容
下载资源
问答
  • 如何判断字符串占用字节数
    千次阅读
    2022-02-26 15:35:40

    编码说明

    js使用Unicode编码,最多时候是:UTF-8UTF-16两种。

    (1)UTF-8 是一种针对Unicode的可变长度字符编码,可以表示Unicode标准中的任何字符,且其编码中的第一个字节仍与ASCII相容,使用一至四个字节为每个字符编码。

    字符代码在:

    • 000000 – 00007F之间的,用一个字节编码;
    • 000080 – 0007FF之间的字符用两个字节;
    • 000800 – 00D7FF 和 00E000 – 00FFFF之间的用三个字节,注: Unicode在范围 D800-DFFF 中不存在任何字符;
    • 010000 – 10FFFF之间的用4个字节。

    (2)UTF-16 则是定长的字符编码,大部分字符使用两个字节编码,字符代码超出 65535 的使用四个字节,如下:

    • 000000 – 00FFFF 两个字节;
    • 010000 – 10FFFF 四个字节。

    js方法

        function strSize(str, charset) {
    		let total = 0;
    		charset = charset?.toLowerCase() || '';
    		for (i = 0; i < str.length; i++) {
    			let charCode = str.charCodeAt(i);
    			if (charset === 'utf-16' || charset === 'utf16') {
    				total += charCode <= 0xffff ? 2 : 4;
    			} else {
    				if (charCode <= 0x007f) {
    					total += 1;
    				} else if (charCode <= 0x07ff) {
    					total += 2;
    				} else if (charCode <= 0xffff) {
    					total += 3;
    				} else {
    					total += 4;
    				}
    			}
    		}
    		return total;
    	}
    
    更多相关内容
  • 想办法在JavaScript中判断在UTF-8下存储的String的字节数,在网上找到很多关于Unicode介绍的文档,最重要的是字符编码数值对应的存储长度
  • 在工作中是不是经常会遇到字符串,但是要求控制字节数的需求?因为很多时候数据库中对字节数有控制,所以在前端过程中就需要判断一下,今天我们来分享一下。 本文主要给大家介绍了关于JS计算字符串所占字节数的相关...
  • Java基本数据类型所占字节数以及一个字符串怎么判断有多少个字节? 解答第一个问题,Java基本数据类型所占字节数 一个字符串判断有多少个字节组成: String采用一种更灵活的方式进行存储。在String中,一个英文...

    一.问题描述

    Java基本数据类型所占字节数以及一个字符串怎么判断有多少个字节?

    解答第一个问题,Java基本数据类型所占字节数

    一个字符串判断有多少个字节组成:

    String采用一种更灵活的方式进行存储。在String中,一个英文字符、阿拉伯数字占1个字节,而中文字符根据编码的不同所占字节数也不同。在UTF-8编码下,一个中文字符占3个字节;而使用GBK编码时一个中文字符占2个字节。测试代码如下:

    展开全文
  • 字符串所占字节数分析

    千次阅读 2021-05-19 10:02:55
    char *s="\ta\017bc"中指针变量s 指向的字符串所占字节数是6的原因。'\t' 是一个转义字符相当于键盘“Tab”键‘a’ 普通字符'\017'转义字符ASCII代码值为8进制数17即10进制数15的那个符号(LZ可以自己去查下看是什么...

    b51a4c4f59e1

    string与strlen

    字符串赋值的时候会不会在末尾自动添加'\0'?

    char *s="\ta\017bc"中指针变量s 指向的字符串所占字节数是6的原因。

    '\t' 是一个转义字符相当于键盘“Tab”键

    ‘a’ 普通字符

    '\017'转义字符ASCII代码值为8进制数17即10进制数15的那个符号(LZ可以自己去查下看是什么符号)

    ‘b’ 普通字符

    ‘c’普通字符

    然后再加一个字符串结束标志‘\0’所以指针变量s,指向的字符串所占字节数是6

    char *s="\ta\017bc";

    for(;*s!='\0';s++)printf("*")//用查询的方法去统计字节数

    b51a4c4f59e1

    需要明确的第一点,strlen所作的仅仅是一个计数器的工作,它从内存的某个位置(可以是字符串开头,中间某个位置,甚至是某个不确定的内存区域)开始扫描,直到碰到第一个字符串结束符'\0'为止,然后返回计数器值。

    例如以下代码片断理论上也是可以编译通过的:

    char str[]="abcdefg";

    printf("%d\n",strlen(&str[5]));

    结果应当为2。该例中,strlen从字符str[5]即'f'开始计数,当到达'g'之后遇到'\0'并停止计数。因此结果为2。

    str2和str3的主要区别就在于C/C++字符串中,允许形如“\056”这样的所谓转义字符存在,它们仅表示一个字节位(byte),一般用于输出无法直接通过键盘输入的字符。

    str0的sizeof为8,导致没有\0结束,因此strlen的返回是不可预期的。

    str1的sizeof实际上是9,会自动加\0结束。

    str2的\056会被解释成8进制数056表示的字符,因此strlen是9,转义字符

    str3的\0会被解释为结束符

    b51a4c4f59e1

    b51a4c4f59e1

    二、sizeof深入理解。

    1.sizeof操作符的结果类型是size_t,它在头文件中typedef为unsigned int类型。该类型保证能容纳实现所建立的最大对象的字节大小。

    2.sizeof是算符,strlen是函数。

    3.sizeof可以用类型做参数,strlen只能用char*做参数,且必须是以'\0'结尾的。sizeof还可以用函数做参数,比如:

    short f();

    printf("%d\n", sizeof(f()));

    输出的结果是sizeof(short),即2。

    4.数组做sizeof的参数不退化,传递给strlen就退化为指针了。

    5.大部分编译程序 在编译的时候就把sizeof计算过了是类型或是变量的长度这就是sizeof(x)可以用来定义数组维数的原因

    char str[20]="0123456789";

    int a=strlen(str); //a=10;

    int b=sizeof(str); //而b=20;

    6.strlen的结果要在运行的时候才能计算出来,时用来计算字符串的长度,不是类型占内存的大小。

    7.sizeof后如果是类型必须加括弧,如果是变量名可以不加括弧。这是因为sizeof是个操作符不是个函数。

    8.当适用了于一个结构类型时或变量, sizeof 返回实际的大小, 当适用一静态地空间数组, sizeof 归还全部数组的尺 寸。sizeof 操作符不能返回动态地被分派了的数组或外部的数组的尺寸

    9.数组作为参数传给函数时传的是指针而不是数组,传递的是数组的首地址,如:

    fun(char [8])

    fun(char [])

    都等价于 fun(char *)在C++里传递数组永远都是传递指向数组首元素的指针,编译器不知道数组的大小如果想在函数内知道数组的大小,需要这样做:进入函数后用memcpy拷贝出来,长度由另一个形参传进去

    b51a4c4f59e1

    10.计算结构变量的大小就必须讨论数据对齐问题。为了CPU存取的速度最快(这同CPU取数操作有关,详细的介绍可以参考一些计算机原理方面的书),C++在处理数据时经常把结构变量中的成员的大小按照4或8的倍数计算,这就叫数据对齐(dataalignment)。这样做可能会浪费一些内存,但理论上速度快了。当然这样的设置会在读写一些别的应用程序生成的数据文件或交换数据时带来不便。MSVC++中的对齐设定,有时候sizeof得到的与实际不等。一般在VC++中加上#pragmapack(n)的设定即可.或者如果要按字节存储,而不进行数据对齐,可以在Options对话框中修改Advancedcompiler页中的Data alignment为按字节对齐。

    11.sizeof操作符不能用于函数类型,不完全类型或位字段。不完全类型指具有未知存储大小的数据类型,如未知存储大小的数组类型、未知内容的结构或联合类型、void类型等。如sizeof(max)若此时变量max定义为int max(),sizeof(char_v) 若此时char_v定义为char char_v [MAX]且MAX未知,sizeof(void)都不是正确形式

    三、结束语

    sizeof使用场合。

    1.sizeof操作符的一个主要用途是与存储分配和I/O系统那样的例程进行通信。例如:

    void *malloc(size_t size),

    size_t fread(void * ptr,size_t size,size_t nmemb,FILE * stream)。

    2.用它可以看看一类型的对象在内存中所占的单元字节。

    void * memset(void * s,int c,sizeof(s))

    3.在动态分配一对象时,可以让系统知道要分配多少内存。

    4.便于一些类型的扩充,在windows中就有很多结构内型就有一个专用的字段是用来放该类型的字节大小。

    5.由于操作数的字节数在实现时可能出现变化,建议在涉及到操作数字节大小时用sizeof来代替常量计算。

    6.如果操作数是函数中的数组形参或函数类型的形参,sizeof给出其指针的大小。

    展开全文
  • 主要给大家总结分享了关于Shell获取字符串长度的多种方法,包括了利用${#str}、利用awk的length方法、利用awk的NF项、利用wc的-L参数、利用expr的length方法以及利用expr的$str : ".*"技巧来实现方法示例,需要的...
  • 任何字符在unicode编码中都占用两个字节。而在一般编码方式中英文字符可以用一个字节表示,中文要用两个。这样英文字符在unicode编码中多占用了一个没有用的字节,这个没用字节就用0代替。如果unicode编码中字符的第...
  • c++ 中字符串的字符数与字节数

    千次阅读 2020-03-13 11:37:45
    c++中字符数是字符的个数,字节数是在内存中所占的大小(siziof()),每一个字符串在内存中都以'/0'结束。 #include<iostream> using namespace std; #include <atlstr.h > int main() { string ...

    c++中字符数是字符的个数,字节数是在内存中所占的大小(siziof()),每一个字符串在内存中都以'/0'结束。

    #include<iostream>
    using namespace std;
    #include <atlstr.h >
    int main()
    {
    	string str_string="test13";
    	CString str_Cstring=_T("test11");
    	char str_char='t';
    	char strchar[]="qwer";
    
        //二维字符数组测试
    	char a[3][4]={"111","132","323"};
    
    	a[2][2]=a[2][1];
    	a[2][2]='1';
    	char fore[4]="111";
    	//scanf("%s",a[2]); //可赋值
    	strcpy(a[2],"111");  //字符串拷贝
    	memcpy(a[2],"222",4); //内存拷贝
    	//二维字符数组测试
    	
    	printf_s(_T("str_string字符数为:%d\n"),str_string.size());
    	printf_s(_T("str_Cstring字符数为:%d\n"),str_Cstring.GetLength());
    
    	printf_s(_T("str_string字节数为:%d\n"),sizeof(str_string));    //string是类,不是数据类型,只是处理字符串的类,可以转换为字符串char a[大小];  strcpy(a,str_string.c_str);(a字符串以'\0结尾')
    	printf_s(_T("str_Cstring字节数为:%d\n"),sizeof(str_Cstring));   //类似于char[]数组,存放字符串都以'\0'结尾,'\0'占一个字节
    	printf_s(_T("str_char字节数为:%d\n"),sizeof(str_char));
    	printf_s(_T("strchar字节数为:%d\n"),sizeof(strchar));
    
    	printf_s(_T("本机基本变量类型所占字节数\n"));
    	printf_s(_T("char所占字节数:%d\n"),sizeof(char));
    	printf_s(_T("BYTE所占字节数:%d\n"),sizeof(BYTE));     //typedef unsigned char       BYTE;
    	printf_s(_T("int所占字节数:%d\n"),sizeof(int));
    	printf_s(_T("float所占字节数:%d\n"),sizeof(float));
    	printf_s(_T("short所占字节数:%d\n"),sizeof(short));
    	printf_s(_T("WORD所占字节数:%d\n"),sizeof(WORD));     //typedef unsigned short      WORD;
    	printf_s(_T("float所占字节数:%d\n"),sizeof(float));
    	printf_s(_T("double所占字节数:%d\n"),sizeof(double));
    	printf_s(_T("longdouble所占字节数:%d\n"),sizeof(long double));
    	printf_s(_T("long所占字节数:%d\n"),sizeof(long));   
    	printf_s(_T("long long所占字节数:%d\n"),sizeof(long long)); 
    	printf_s(_T("DWORD所占字节数:%d\n"),sizeof(DWORD));  //typedef unsigned long       DWORD;
    	printf_s(_T("bool所占字节数:%d\n"),sizeof(bool));    //标准c++ bool类型
    	printf_s(_T("BOOL所占字节数:%d\n"),sizeof(BOOL));    //typedef int                 BOOL;
    	printf_s(_T("uint所占字节数:%d\n"),sizeof(UINT));    //typedef unsigned int        UINT;
    
    
    	system("pause");
    }

    测试结果如下:

    展开全文
  • 其实就是String.getBytes().length这样...英文字母和中文汉字在不同字符集编码下的字节数 英文字母: 字节数 : 1;编码:GB2312 字节数 : 1;编码:GBK 字节数 : 1;编码:GB18030 字节数 : 1;编码:ISO-8859-1 字节数 ...
  • C语言:函数实现求字符串占内存单元字节 int f(char *s) { char *t=s; while(*t++) // 循环到\0结束, 但是t指针指向了\0后边的单元 return t-s; } 其中问题: 区分t++ 与 ++t的区别 \0的意义 指针的减法...
  • java统计字符串占多少字节

    千次阅读 2020-01-16 11:03:19
    因为java默认是使用Unicode编码,所以中文也是只是算一个,所以第一个得出的结果是12第二个就可以自己计算出字节的长度,因为一个中文占两个字节的,所以就计算出来是16;还有一种方法是使用ascall判断是否在0到255...
  • Go语言中获取字符串字节长度使用len()函数,获取字符串的字符个使用utf8.RuneCountInString函数或者转换为rune切片求其长度,这两种方法都可以达到预期结果。 好啦,这篇文章就到这里啦,素质三连(分享、点赞...
  • 判断字符串所占的字节数

    千次阅读 2014-05-09 11:57:22
    //判断字符串所占的字节数 function GetCharLength(str) { var iLength = 0; //记录字符的字节数 for (var i = 0; i ; i++) //遍历字符串中的每个字符 { if (str.charCodeAt(i) > 255) //如果当前字符的编码大于...
  • Python 中,要想知道一个字符串有多少个字符(获得字符串长度),或者一个字符串占用多少个字节,可以使用 len 函数。 len 函数的基本语法格式为: len(string) 其中 string 用于指定要进行长度统计的字符串。 ...
  • 下面小编就为大家带来一篇java按字节截取带有汉字的字符串的解法(推荐)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
  • Java字符串所占字节数的小总结

    千次阅读 2019-02-02 15:17:38
    首先,char为Java的基本类型,基本类型所占的字节数是固定的,如int占4字节,double占8字节,这可以使得Java在不同的平台上所占类型...在String中,一个英文字符占1个字节,而中文字符根据编码的不同所占字节数也不...
  • 1、字符串字符数: 直接str.length即可获取 2、字符串字节数: js获取字符串字节长度小技巧:... 用JavaScript计算在UTF-8下存储字符串占用字节数:https://www.jb51.net/article/40412.htm 利用JS如何计算...
  • * 判断字节范围是否在四,五,六范围内 * * 1字节 0xxxxxxx * 2字节 110xxxxx 10xxxxxx * 3字节 1110xxxx 10xxxxxx 10xxxxxx * 4字节 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx * 5字节 111110xx 10xxxxxx 10...
  • Java中判断字符串的编码有两种思路: 一种是根据byte的长度判断,英文的字母数字好标点符号都是一个byte,且值在0-255之间 另一种是根据中文的Unicode取值范围判断,这个就是把所以的范围都包含,才能判断正确,...
  • 字母、数据各占一个字节,中文占2个字节 return str.replace(/[\u0391-\uFFE5]/g,"aa").length \u0391-\uFFE5 匹配双字节字符(汉字+符号) str:要检测的字符串 ...
  • 我的理解是os.urandom(size)输出一个给定"size"的随机字节串,但是:import osimport sysprint(sys.getsizeof(os.urandom(42)))>>>75为什么这不是42?以及一个相关问题:import base64import binasciiprint...
  • 话不多说,直接上函数,这个函数是用来对字符串进行检查和转码的。复制代码 代码如下:<?phpfunction safeEncoding($string,$outEncoding =’UTF-8′) { $encoding = “UTF-8”; for($i=0;$i<strlen($string...
  • java校验字符串字节长度

    万次阅读 2018-05-09 19:03:19
    页面传过来 utf-8编码,中文占3个字节,英文的话只占一个字节System.out.println("人".getBytes().length);... 输出2页面传过来 GBK编码,则占用2个字节System.out.println("人".getBytes()...
  • Js中求字符串占用字节长度

    千次阅读 2018-11-06 16:25:41
    var a = ‘hello world!你好世界!... //先用num保存一下字符串的长度(可以理解为:先假设每个字符都只占用一个字节) for (var i = 0; i &lt; str.length; i ++) { //遍历字符串 if (s...
  • 查看字符的所占字节数 比如你要查看的字符是个???? emoji的字符 In [12]: a="""????""" In [13]: a.encode('utf8') Out[13]: b'\xf0\x9f\x98\x8b' In [14]: b=a.encode('utf8') In [15]: len(b) Out[15]: 4 ???...
  • 如何计算C语言结构占用字节数

    千次阅读 2021-05-19 08:02:11
    对于格式一: int类型取4的整数倍,因为A占用一个字节后,B无法放置,因此打开一个新单元,然后打开一个新单元放入C,因此被占用字节数格式之一是: 3 * 4 = 12; 类似地,对于第二种晶格e68a84e8a2ade799bee5baa6e...
  • [size=large][color=blue]想在页面上计算下字节长度,因为太长后面就不能插入数据库了,所以特别纠结,咋样限制用户的...[size=large][b][color=red]关键字:怎么用js,javascript 计算UTF-8编码字符串占用字节长度...
  • 用JavaScript计算字符串占用字节数

    千次阅读 2013-08-08 14:12:30
    用JavaScript计算字符串占用字节数 最近和JavaScript纠缠上了。 遇到这么一个问题,数据库的字符集为UTF-8的,要在页面上使用JavaScript验证输入的文本用UTF-8存储时占用字节长度。JavaScript的...
  • 字节 1字节=8bit (8个二进制位) 字符 1个ASCII字符占了1个字节 ...ss := “ j” 表示一个字符串,其类型为 string ss2 := 'j' 表示一个字符,其类型为rune(int32的别名) 为什么是32,3个字节不是24吗?这是因

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 119,707
精华内容 47,882
关键字:

如何判断字符串占用字节数