`
sillycat
  • 浏览: 2486892 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

Buffer in NodeJS 12 and NodeJS 8

阅读更多
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


分享到:
评论

相关推荐

    详解nodeJS之二进制buffer对象

    Buffer类被引入作为Nodejs的API的一部分,使其可以在TCP流和文件系统操作等场景中处理二进制数据流。现在TypedArray已经被添加进ES6中,Buffer类以一种更优与更适合Node.js用例的方式实现了Uint8Array。本文将详细...

    nodejs中的buffer

    buffer的基本操作

    NodeJS模块Buffer原理及使用方法解析

    Buffer 作为 nodejs 中重要的概念和功能,为开发者提供了操作二进制的能力。本文记录了几个问题,来加深对 Buffer 的理解和使用: 认识缓冲器 如何申请堆外内存 如何计算字节长度 如何计算字节长度 如何转换...

    NodeJS中Buffer模块详解

    JS语言自身只有字符串数据类型,没有二进制数据类型,因此NodeJS提供了一个与String对等的全局构造函数Buffer来提供对二进制数据的操作。除了可以读取文件得到Buffer的实例外,还能够直接构造,例如: 代码如下:  ...

    js代码-nodejs-Buffer

    js代码-nodejs-Buffer

    理解nodejs的stream和pipe机制的原理和实现

    本篇文章主要介绍了理解nodejs的stream和pipe机制的原理和实现,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

    nodejs深入浅出 带完整目录

    《深入浅出Node.js》 [1] 由首章Node介绍为索引,涉及Node的各个方面,主要内容包含模块机制的揭示、异步I/O实现原理的展现、异步编程的探讨、内存控制的介绍、二进制数据Buffer的细节、Node中的网络编程基础、Node...

    rh-nodejs8-nodejs-buffer-shims-1.0.0-3.el7.noarch.rpm

    官方离线安装包,测试可用。使用rpm -ivh [rpm完整包名] 进行安装

    rh-nodejs8-nodejs-is-buffer-1.1.4-3.el7.noarch.rpm

    官方离线安装包,测试可用。使用rpm -ivh [rpm完整包名] 进行安装

    buffer.js:适配NodeJS

    客户端适配NodeJs::Buffer 入门 附在您的网页中: &lt; script src =" dist/buffer.js " &gt; &lt;/ script &gt; 文档 (即将推出) 例子 (即将推出) 执照 版权所有 (c) 2012 Andrew Sednev 在 MIT 许可下获得...

    nodejs-buffer-bug-case

    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初学者教程

    nodejs 简介与安装 全局对象与常用工具 http协议 node_Http_Server buffer fs_模块 模块系统 mongoDB_mongooose express 工程 cookie_session 部署_远程服务器

    nodejs基础之buffer缓冲区用法分析

    主要介绍了nodejs基础之buffer缓冲区用法,结合实例形式分析了buffer缓冲区的概念、功能、创建、读写等相关操作技巧,需要的朋友可以参考下

    rh-nodejs6-nodejs-buffer-shims-1.0.0-3.el7.noarch.rpm

    官方离线安装包,测试可用。使用rpm -ivh [rpm完整包名] 进行安装

    rh-nodejs6-nodejs-buffer-shims-1.0.0-2.el7.noarch.rpm

    官方离线安装包,测试可用。使用rpm -ivh [rpm完整包名] 进行安装

    深入理解Nodejs Global 模块

    在 nodejs 中,除了可以直接使用 V8 JavaScript 引擎中所支持的原生 JavaScript 的函数和对象外,它还追加了一些其他的函数和对象(比如:Buffer 对象、require 函数等)。 Buffer 对象: 用于处理二进制数据 ...

    rh-nodejs6-nodejs-is-buffer-1.1.4-3.el7.noarch.rpm

    官方离线安装包,测试可用。使用rpm -ivh [rpm完整包名] 进行安装

Global site tag (gtag.js) - Google Analytics