gpt4 book ai didi

node.js - Buffer.byteLength() 被窃听

转载 作者:太空宇宙 更新时间:2023-11-03 22:18:58 24 4
gpt4 key购买 nike

Node 版本是0.6.17。

我试图获取字符的字节数( SO question ),但现在我正在测试如何获取真实的字节数。 REAL 数字意味着如果 char 的值大于 127,则必须使用前导额外字节 ( UTF8 wiki ) 对其进行编码。

请参阅:

console.log (Buffer.byteLength ("a", "utf8"));  //bytes: 1, UNICODE hex: 0x61 (1), REAL hex: 0x61 (1)
console.log (Buffer.byteLength ("¡", "utf8")); //bytes: 2, UNICODE hex: 0xA1 (1), REAL hex: 0xC2A1 (2)
console.log (Buffer.byteLength ("↑", "utf8")); //bytes: 3, UNICODE hex: 0x2191 (2), REAL hex: 0xE28691 (3)
console.log (Buffer.byteLength ("𤁥", "utf8")); //bytes: 3, UNICODE hex: 0x24065 (3), REAL hex: 0xF0A481A5 (4)

这里我们有两种可能性:

  1. Buffer.byteLength() 返回 UNICODE 字节数。示例:¡ 的 Unicode 为 0xA1(1 字节)。如果这是真的,那么该函数就会被窃听,因为它返回 2(实际长度为 2)。
  2. Buffer.bytelength() 返回实际字节数。示例:𤁥 的实际十六进制值为 0xF0A481A5(4 个字节)。如果这是真的,那么该函数就会被窃听,因为它返回 3(unicode 长度为 3)。

你觉得怎么样?功能有问题吗?

最佳答案

已解决:

https://github.com/joyent/node/issues/3262#issuecomment-5677385

node.js 版本 6 仅支持 BMP字符集(0x0000 - 0xFFFF)。版本 7 及更高版本支持大于 0xFFFF 的字符(未测试)。

该函数返回 REAL 长度,因此示例 1、2、3 是正确的,而 4 是不正确的。

关于node.js - Buffer.byteLength() 被窃听,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10572232/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com