【发布时间】:2016-05-15 23:53:25
【问题描述】:
使用 Node.js v5.1.0,我正在尝试确定缓冲区的内容长度。因此,我正在这样做:
Buffer.byteLength(self.data, 'utf8')
self.data 看起来像这样:
<Buffer ff d8 ff e0 00 10 4a 46 49 46 00 01 01 01 00 f0 00 f0 00 00 ff db 00 43 00 05 03 04 04 04 03 05 04 04 04 05 05 05 06 07 0c 08 07 07 07 07 0f 0b 0b 09 ... >
我正在加载的图像在文件系统 (OS X) 上为 109,055 字节(磁盘上为 111 KB),但我的内容长度计算返回 198,147 字节。如果我将编码设置为ascii,它将返回 104,793 个字节。更接近,但仍然不正确。
我计算正确吗?我需要对缓冲区做些什么来让它返回正确的值吗?如果我做对了,为什么会出现差异?如果我做错了,请分享;)
【问题讨论】:
-
你不是说
self.data.byteLength吗? -
哈!是的,这完全有效。谢谢。如果你愿意,把它作为答案扔进去?而且,如果您知道为什么存在另一种方式,可以工作,但返回错误的值,那也太棒了;)
-
Buffer.byteLength 需要一个字符串作为第一个参数,而不是缓冲区,所以可能有一个正在进行的转换与它混淆。
self.data中的数据是文本吗?
标签: javascript node.js buffer