简介
在这个实验中,你将学习如何使用 JavaScript 计算字符串的字节大小。在处理数据传输、存储计算或对数据大小有要求的 API 限制时,了解字符串的字节大小至关重要。
你将学习如何将字符串转换为 Blob 对象,并利用其属性来确定字符串的确切字节大小。这种技术在 Web 开发中处理文件上传、网络请求或数据存储优化时经常使用。
在这个实验中,你将学习如何使用 JavaScript 计算字符串的字节大小。在处理数据传输、存储计算或对数据大小有要求的 API 限制时,了解字符串的字节大小至关重要。
你将学习如何将字符串转换为 Blob 对象,并利用其属性来确定字符串的确切字节大小。这种技术在 Web 开发中处理文件上传、网络请求或数据存储优化时经常使用。
在计算字符串的字节大小之前,了解字符串在 JavaScript 中的表示方式非常重要。
在 JavaScript 中,字符串是 UTF-16 代码单元的序列。这意味着像表情符号或某些符号这样的字符可能需要多个字节来表示。例如,一个简单的英文字母占 1 个字节,但一个表情符号可能占 4 个字节。
让我们从在终端中启动 Node.js 开始:
node
你现在应该进入了 Node.js 交互式控制台,它看起来大概是这样的:
Welcome to Node.js v14.x.x.
Type ".help" for more information.
>

在这个控制台中,你可以直接试验 JavaScript 代码。尝试输入以下命令来查看字符串的长度:
"Hello World".length;
你应该会看到输出:
11
这给出了字符数量,但不是实际的字节大小。字符数量和字节大小可能不同,尤其是在包含特殊字符的情况下。让我们在下一步中进一步探讨这个问题。
既然你已经了解了字符串的表示方式,接下来让我们学习如何使用 Blob 对象计算字符串的实际字节大小。
Blob(二进制大对象,Binary Large Object)表示一个不可变的原始数据的类文件对象。通过将字符串转换为 Blob,你可以访问其 size 属性来确定字节大小。
在 Node.js 控制台中,让我们创建一个函数来计算字节大小:
const byteSize = (str) => new Blob([str]).size;
这个函数接受一个字符串作为输入,将其转换为 Blob,并返回其字节大小。
让我们用一个简单的例子来测试这个函数:
byteSize("Hello World");
你应该会看到输出:
11
在这种情况下,字符数量和字节大小相同,因为 "Hello World" 只包含 ASCII 字符,每个字符由一个字节表示。
现在让我们尝试一个非 ASCII 字符:
byteSize("😀");
你应该会看到输出:
4
这表明虽然这个表情符号看起来是一个字符,但实际上它占用了 4 个字节的存储空间。
让我们来探究不同类型的字符如何影响字符串的字节大小。
在 Node.js 控制台中,让我们用各种字符串来测试我们的 byteSize 函数:
byteSize("The quick brown fox jumps over the lazy dog");
预期输出:
43
byteSize("123!@#$%^&*()");
预期输出:
13
byteSize("Hello, 世界!");
预期输出:
13
byteSize("😀😃😄😁");
预期输出:
16
注意,当字符类型混合时,尤其是包含像中文字符和表情符号这样的非 ASCII 字符时,字节大小会大于字符数量。
在处理可能包含国际字符或特殊符号的数据时,理解这一点很重要,因为它会影响存储需求和数据传输大小。
让我们通过输入以下内容退出 Node.js 控制台:
.exit
这将使你回到常规的终端提示符。
现在,让我们创建一个 JavaScript 文件,以更实用的方式实现我们的字节大小计算函数。这将展示你如何在实际应用中使用这个函数。
在 WebIDE 中创建一个新文件。点击文件资源管理器侧边栏中的“New File”图标,并将其命名为 byteSizeCalculator.js。
在文件中添加以下代码:
/**
* Calculate the byte size of a given string.
* @param {string} str - The string to calculate the byte size for.
* @returns {number} The size in bytes.
*/
function calculateByteSize(str) {
return new Blob([str]).size;
}
// Examples with different types of strings
const examples = [
"Hello World",
"😀",
"The quick brown fox jumps over the lazy dog",
"123!@#$%^&*()",
"Hello, 世界!",
"😀😃😄😁"
];
// Display the results
console.log("String Byte Size Calculator\n");
console.log("String".padEnd(45) + "| Characters | Bytes");
console.log("-".repeat(70));
examples.forEach((example) => {
console.log(
`"${example}"`.padEnd(45) +
`| ${example.length}`.padEnd(12) +
`| ${calculateByteSize(example)}`
);
});
按下 Ctrl+S 或从菜单中选择“File > Save”来保存文件。
从终端运行该文件:
node byteSizeCalculator.js
你应该会看到类似于以下的输出:
String Byte Size Calculator
String | Characters | Bytes
----------------------------------------------------------------------
"Hello World" | 11 | 11
"😀" | 1 | 4
"The quick brown fox jumps over the lazy dog" | 43 | 43
"123!@#$%^&*()" | 13 | 13
"Hello, 世界!" | 10 | 13
"😀😃😄😁" | 4 | 16
这个表格清晰地展示了不同类型字符串的字符数量和字节大小之间的差异。
在以下情况下,理解这些差异至关重要:
恭喜你完成了「字符串字节大小计算」实验。你已经学会了:
Blob 对象来计算字符串的字节大小这些知识在以下场景中非常有用:
理解字符串的字节大小有助于确保你的应用程序正确管理数据存储和传输,尤其是在处理国际字符、表情符号和特殊符号时。