node.js - 在缓冲区Nodejs中写入位
问题描述
朋友们,我如何向 Node js Buffer 中写入一点,我可以写入字节、整数等但不知道如何写入位。可能吗?如果是,那怎么办?我应该在缓冲区 1 或 0 中写入一个布尔值,并使用 readBit() 在 API 中读取它,这就是为什么我需要在缓冲区中写入一点。
解决方案
您不能直接访问单个位,但可以在 JS 中简单地做一些魔术。
这将使您能够读取和写入单个位到节点缓冲区(Uint8Array)。
var buffer = new Uint8Array(1);
function readBit(buffer, i, bit){
return (buffer[i] >> bit) % 2;
}
function setBit(buffer, i, bit, value){
if(value == 0){
buffer[i] &= ~(1 << bit);
}else{
buffer[i] |= (1 << bit);
}
}
// write bit 0 of buffer[0]
setBit(buffer, 0, 0, 1)
// write bit 1 of buffer[0]
setBit(buffer, 0, 1, 1)
setBit(buffer, 0, 1, 0)
// write bit 2 of buffer[0]
setBit(buffer, 0, 2, 0)
// write bit 3 of buffer[0]
setBit(buffer, 0, 3, 0)
setBit(buffer, 0, 3, 1)
// read back the bits
console.log(
readBit(buffer, 0, 0),
readBit(buffer, 0, 1),
readBit(buffer, 0, 2),
readBit(buffer, 0, 3)
);
推荐阅读
- c# - 当 WCF 应用程序在 Windows 7 上作为 Windows 服务托管时,找不到证书
- javascript - 在JS中格式化输入类型=“文本”
- reporting-services - SSRS 根据数据集字段创建尽可能多的表(使用一个数据集)
- spring - 使用 Spring Integration DSL 读取 Tibco EMS 主题
- c++ - 从 'float*' 到 'int' 的错误无效转换 [-fpermissive]
- python - Graphlab 和 SFrame
- ios - Xcode Storyboard 使按钮高度等于底部布局指南(或安全区域下方的空间)+ 常量?
- sql - 在函数中转 SQL 语句
- hyperledger-fabric - 无需托管对等节点即可参与 Hyperledger
- python-3.x - 如何确保按给定顺序处理所有命令(和错误)