Buffer.byteLength返回截然不同的字节长度

使用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字节。 更接近,但仍然不正确。

我是否正确计算? 我是否需要对缓冲区执行某些操作才能返回正确的值? 如果我做得对,为什么这个差距? 如果我做错了,请分享;)

如文档中所述, Buffer.byteLength()返回string的字节长度,假定特定的编码。

Buffertypes实际上是一个ArrayBuffer ,这意味着它的长度可以通过byteLength属性来获取。 另外,Node的实现添加了一个length属性,它提供了相同的长度。