Buffer in NodeJS 12 and NodeJS 8
My Simple Testing codes
> cat index.js
const size = 'hello'.length;
const AES_BLOCK_SIZE = 8;
const padLength = (size % AES_BLOCK_SIZE);
let encryptText = Buffer.alloc(size + padLength, '0x06', 'hex');
console.log(encryptText);
Version 8
> node --version
v8.14.1
Run it and it works
> node index.js
<Buffer 00 00 00 00 00 00 00 00 00 00>
Switch to version 12
> node --version
v12.14.1
It failed
> node index.js
buffer.js:999
throw new ERR_INVALID_ARG_VALUE('value', value);
^
TypeError [ERR_INVALID_ARG_VALUE]: The argument 'value' is invalid. Received '0x06'
at _fill (buffer.js:999:13)
at Function.alloc (buffer.js:348:12)
at Object.<anonymous> (/Users/hluo/work/nodejs/buffer/index.js:4:26)
at Module._compile (internal/modules/cjs/loader.js:955:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:991:10)
at Module.load (internal/modules/cjs/loader.js:811:32)
at Function.Module._load (internal/modules/cjs/loader.js:723:14)
at Function.Module.runMain (internal/modules/cjs/loader.js:1043:10)
at internal/main/run_main_module.js:17:11 {
code: 'ERR_INVALID_ARG_VALUE'
}
Understand HEX
ASCII: A (65)
Binary: 0100 _ 0001
Hex: 41
Change the script to be
> cat index.js
const size = 'hello'.length;
const AES_BLOCK_SIZE = 8;
const padLength = (size % AES_BLOCK_SIZE);
let encryptText = Buffer.alloc(size + padLength, 0x06, 'hex');
console.log(encryptText);
> node index.js
<Buffer 06 06 06 06 06 06 06 06 06 06>
With the help of nodenv, I can easily switch my nodeJS version and check
https://www.iteye.com/blog/sillycat-2512593
References:
https://nodejs.org/docs/latest-v8.x/api/buffer.html#buffer_class_method_buffer_alloc_size_fill_encoding
https://nodejs.org/docs/latest-v12.x/api/buffer.html#buffer_class_method_buffer_alloc_size_fill_encoding
https://www.jianshu.com/p/57c4e8d3f035
分享到:
相关推荐
Buffer类被引入作为Nodejs的API的一部分,使其可以在TCP流和文件系统操作等场景中处理二进制数据流。现在TypedArray已经被添加进ES6中,Buffer类以一种更优与更适合Node.js用例的方式实现了Uint8Array。本文将详细...
buffer的基本操作
Buffer 作为 nodejs 中重要的概念和功能,为开发者提供了操作二进制的能力。本文记录了几个问题,来加深对 Buffer 的理解和使用: 认识缓冲器 如何申请堆外内存 如何计算字节长度 如何计算字节长度 如何转换...
JS语言自身只有字符串数据类型,没有二进制数据类型,因此NodeJS提供了一个与String对等的全局构造函数Buffer来提供对二进制数据的操作。除了可以读取文件得到Buffer的实例外,还能够直接构造,例如: 代码如下: ...
js代码-nodejs-Buffer
本篇文章主要介绍了理解nodejs的stream和pipe机制的原理和实现,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
《深入浅出Node.js》 [1] 由首章Node介绍为索引,涉及Node的各个方面,主要内容包含模块机制的揭示、异步I/O实现原理的展现、异步编程的探讨、内存控制的介绍、二进制数据Buffer的细节、Node中的网络编程基础、Node...
官方离线安装包,测试可用。使用rpm -ivh [rpm完整包名] 进行安装
官方离线安装包,测试可用。使用rpm -ivh [rpm完整包名] 进行安装
客户端适配NodeJs::Buffer 入门 附在您的网页中: < script src =" dist/buffer.js " > </ script > 文档 (即将推出) 例子 (即将推出) 执照 版权所有 (c) 2012 Andrew Sednev 在 MIT 许可下获得...
nodejs-buffer-bug-case 这段代码似乎触发了 node.js 中的一个错误。 它是这样发生的: ➜ nodejs-buffer-bug-case git:(master) ✗ uname -a Darwin skerton.local 14.3.0 Darwin Kernel Version 14.3.0: Mon Mar...
nodejs 简介与安装 全局对象与常用工具 http协议 node_Http_Server buffer fs_模块 模块系统 mongoDB_mongooose express 工程 cookie_session 部署_远程服务器
主要介绍了nodejs基础之buffer缓冲区用法,结合实例形式分析了buffer缓冲区的概念、功能、创建、读写等相关操作技巧,需要的朋友可以参考下
官方离线安装包,测试可用。使用rpm -ivh [rpm完整包名] 进行安装
官方离线安装包,测试可用。使用rpm -ivh [rpm完整包名] 进行安装
在 nodejs 中,除了可以直接使用 V8 JavaScript 引擎中所支持的原生 JavaScript 的函数和对象外,它还追加了一些其他的函数和对象(比如:Buffer 对象、require 函数等)。 Buffer 对象: 用于处理二进制数据 ...
官方离线安装包,测试可用。使用rpm -ivh [rpm完整包名] 进行安装