js计算字符串大小存储所占字节数

JavaScript中,计算字符串所占的大小(占用的字节数)并不直接,但可以通过一些方法间接得到。
我们需要知道一个前提,英文字母 lenght 和字节数是一样的:都是1,而中文 lenght=1字节数=2。因此,需要把中文字符的字节数计算出来,方法如下。

一、利用 Blob 对象

把字符串装入 Blob 对象中,该Blob对象的size属性就是字符串的大小。

function getStringSize(str) {
  return new Blob([str]).size
}

// test
console.log(getStringSize('a一'))
// 4

Blob是一个装着二进制数据的容器对象。Blob 对象表示一个不可变、原始数据的类文件对象。它的数据可以按文本或二进制的格式进行读取,也可以转换成 ReadableStream 来用于数据操作。

Blob 构造函数主要有两个参数:

参数一:存放文件原始数据的可迭代对象,一般放数组。数组中可以存放各种类型的文件数据格式,例如BufferBlobString等等。

Blob 属性:

size:只读属性,Blob中的字节数。

二、利用字符串替换

计算字符串的长度(一个双字节字符长度计2,ASCII字符计1)

// 原理:把中文字符替换成2个英文字母,那么字节数就是2
// \u0000这个表示的是unicode编码
function getStringSizeByReplace(str) {
  // 匹配双字节字符(包括汉字在内):[^\u0000-\u00ff]
  return str.replace(/[^\u0000-\u00ff]/g, 'aa').length
}

// test
console.log(getStringSizeByReplace('a一'))
// 3

转为更常见的存储单位 MB KB

// 将字节长度转换为千字节(KB)
function b2k(bytes) {
  return bytes / 1024
}

// 将字节长度转换为兆字节(MB)
function b2m(bytes) {
  return bytes / (1024 * 1024)
}

字符串存储大小的应用

计算localstorage最大存储容量、已用容量、剩余容量。

  • 6
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值