利用JS如何计算字符串所占字节数示例代码

 更新时间:2017年09月13日 10:03:51   作者:Poetry  
因为最近项目有个需求要用js计算一串字符串写入到localStorage里所占的内存,所以便有了这篇文章,下面这篇文章主要给大家介绍了关于利用JS如何计算字符串所占字节数的相关资料,需要的朋友可以参考下。

前言

在工作中是不是经常会遇到字符串,但是要求控制字节数的需求?因为很多时候数据库中对字节数有控制,所以在前端过程中就需要判断一下,今天我们来分享一下。

本文主要给大家介绍了关于JS计算字符串所占字节数的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧。

示例代码

/**
 * 计算字符串所占的内存字节数,默认使用UTF-8的编码方式计算,也可制定为UTF-16
 * UTF-8 是一种可变长度的 Unicode 编码格式,使用一至四个字节为每个字符编码
 * 
 * 000000 - 00007F(128个代码)  0zzzzzzz(00-7F)        一个字节
 * 000080 - 0007FF(1920个代码)  110yyyyy(C0-DF) 10zzzzzz(80-BF)    两个字节
 * 000800 - 00D7FF 
 00E000 - 00FFFF(61440个代码) 1110xxxx(E0-EF) 10yyyyyy 10zzzzzz   三个字节
 * 010000 - 10FFFF(1048576个代码) 11110www(F0-F7) 10xxxxxx 10yyyyyy 10zzzzzz 四个字节
 * 
 * 注: Unicode在范围 D800-DFFF 中不存在任何字符
 * {@link http://zh.wikipedia.org/wiki/UTF-8}
 * 
 * UTF-16 大部分使用两个字节编码,编码超出 65535 的使用四个字节
 * 000000 - 00FFFF 两个字节
 * 010000 - 10FFFF 四个字节
 * 
 * {@link http://zh.wikipedia.org/wiki/UTF-16}
 * @param {String} str 
 * @param {String} charset utf-8, utf-16
 * @return {Number}
 */
  
 var sizeof = function(str, charset){
  var total = 0,
   charCode,
   i,
   len;
  charset = charset ? charset.toLowerCase() : '';
  if(charset === 'utf-16' || charset === 'utf16'){
   for(i = 0, len = str.length; i < len; i++){
    charCode = str.charCodeAt(i);
    if(charCode <= 0xffff){
     total += 2;
    }else{
     total += 4;
    }
   }
  }else{
   for(i = 0, len = str.length; i < len; i++){
    charCode = str.charCodeAt(i);
    if(charCode <= 0x007f) {
     total += 1;
    }else if(charCode <= 0x07ff){
     total += 2;
    }else if(charCode <= 0xffff){
     total += 3;
    }else{
     total += 4;
    }
   }
  }
  return total;
 }

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对脚本之家的支持。

相关文章

  • bootstrap table动态加载数据示例代码

    bootstrap table动态加载数据示例代码

    本篇文章主要介绍了bootstrap table动态加载数据示例代码,可以实现点击选择按钮,弹出模态框,加载出关键词列表,有兴趣的可以了解一下。
    2017-03-03
  • 微信小程序实现根据日期和时间排序功能

    微信小程序实现根据日期和时间排序功能

    这篇文章主要为大家详细介绍了微信小程序实现根据日期和时间排序功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-08-08
  • js防止DIV布局滚动时闪动的解决方法

    js防止DIV布局滚动时闪动的解决方法

    这篇文章主要介绍了js防止DIV布局滚动时闪动的解决方法,通过js的window.requestAnimationFrame来解决这一问题,非常具有实用价值,需要的朋友可以参考下
    2014-10-10
  • ie6下png图片背景不透明的解决办法使用js实现

    ie6下png图片背景不透明的解决办法使用js实现

    我们时常在使用png图片的时候,在ie6下发生背景不透明的问题,解决的方法实在是太多了,下面给大家介绍下一个js解决的方式,感兴趣的朋友可以了解下的
    2013-01-01
  • 一文带你理解JavaScript中的函数式编程

    一文带你理解JavaScript中的函数式编程

    函数式编程 是一种 编程规范,也是一种对语言程序(比如JavaScript)本身能力的 运用方式。本篇文章将从 编程规范 来介绍函数式编程的到底是一种什么样的规范,希望对大家有所帮助
    2023-02-02
  • JS+CSS实现经典的左侧竖向滑动菜单效果

    JS+CSS实现经典的左侧竖向滑动菜单效果

    这篇文章主要介绍了JS+CSS实现经典的左侧竖向滑动菜单效果,涉及JavaScript响应鼠标事件动态操作页面元素的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-09-09
  • javascript实现循环广告条效果

    javascript实现循环广告条效果

    这篇文章主要为大家详细介绍了javascript实现循环广告条效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-12-12
  • JavaScript中获取样式的原生方法小结

    JavaScript中获取样式的原生方法小结

    这篇文章主要介绍了JavaScript中获取样式的原生方法小结,本文总结了5种JS获取样式的原生方法,并分别给出了实例,需要的朋友可以参考下
    2014-10-10
  • Bootstrap显示与隐藏简单实现代码

    Bootstrap显示与隐藏简单实现代码

    这篇文章主要为大家详细介绍了bootstrap显示与隐藏的简单实现代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-03-03
  • echarts实现横向和纵向滚动条(使用dataZoom)

    echarts实现横向和纵向滚动条(使用dataZoom)

    这篇文章主要给大家介绍了关于echarts使用dataZoom实现横向和纵向滚动条的相关资料,最近项目中使用到echarts图表,当数据过多时需要添加横向滚动条,需要的朋友可以参考下
    2023-08-08

最新评论